如何在JavaScript中验证纯路径形式的URL端点?
验证纯URL路径端点的正则表达式解决方案
你需要的是仅匹配以斜杠开头、无任何域名/协议前缀的纯路径端点,核心问题是原正则没有锚定字符串的首尾,导致会匹配长字符串中符合规则的子串。
修正后的正则表达式
^\/[A-Za-z0-9_.:-~/]*$
规则解释
^:强制匹配字符串的起始位置,确保路径开头就是斜杠,不会有http://、域名等前缀\/:明确要求路径以斜杠开头,符合纯端点的格式[A-Za-z0-9_.:-~/]*:保留你原规则中允许的路径字符(字母、数字、下划线、点、冒号、连字符、波浪线、斜杠),*表示允许0个或多个这类字符(支持根路径/)$:强制匹配字符串的结束位置,确保路径后面没有额外内容(比如域名后缀)
JavaScript 测试示例
const endpointRegex = /^\/[A-Za-z0-9_.:-~/]*$/; // 验证通过的情况 console.log(endpointRegex.test('/user/update')); // true console.log(endpointRegex.test('/')); // true(根路径) console.log(endpointRegex.test('/user/profile_123/edit')); // true console.log(endpointRegex.test('/api/v2/data:export')); // true // 验证失败的情况 console.log(endpointRegex.test('http://url.com/user/update')); // false(含域名前缀) console.log(endpointRegex.test('user/update')); // false(无开头斜杠) console.log(endpointRegex.test('/user/update?param=1')); // false(含查询参数,若需支持可调整规则)
可选调整:禁止空根路径
如果不希望匹配仅为/的根路径,可将*替换为+,确保至少有一个路径字符:
^\/[A-Za-z0-9_.:-~/]+$
此时/会验证失败,/user则会通过。
内容的提问来源于stack exchange,提问作者Pranu Pranav
相关产品推荐
相关产品推荐

