匹配末尾含s或不含s的Vanity URL的最优方法
解决Vanity URL复数形式匹配的正则方案
你尝试的正则^/park[s|*]project*$不可行,问题出在这几点:
[s|*]是字符集合,会匹配s、|或*任意一个字符,不是表示s可选,还会错误匹配带|或*的无效URLproject*里的*作用在最后一个t上,会匹配projec+任意多个t,完全达不到让project后s可选的效果
最优正则表达式
要匹配你列出的所有URL,最简洁准确的正则是:
^/parks?projects?$
正则拆解
^/:匹配URL开头的根路径斜杠park:固定匹配park字符串s?:表示s可以出现0次或1次(对应有没有复数后缀)project:固定匹配project字符串s?:同样表示结尾的s可选$:匹配URL的结尾,避免匹配更长的无效路径
验证匹配情况
这个正则能完美匹配你列出的所有URL:
- ✅
/parksprojects(park带s,project带s) - ✅
/parksproject(park带s,project不带s) - ✅
/parkproject(park不带s,project不带s) - ✅
/parkprojects(park不带s,project带s)
如果需要兼容大小写(比如用户输入大写S),可以在正则末尾加i修饰符,变成^/parks?projects?$i(具体语法根据你使用的正则引擎调整)。
内容的提问来源于stack exchange,提问作者krystleto
相关产品推荐
相关产品推荐

