如何编写符合
的JavaScriptRegExp
'/api/users'
'/api/users/'
'/api/users?age=22'
'/api/users/?age=22'
但不是
'/api/users/id'
Regex
到目前为止我已尝试过:
new RegExp('^' + '/api/users' + '\/?\\S*' + '$')
答案 0 :(得分:0)
这样的模式应该有效:
^/api/users/?(\?age=22)?$
或者假设您想要为年龄参数匹配不仅仅是文字22
:
^/api/users/?(\?age=\d+)?$
这将匹配文字/api/users
,后跟可选的\
,后跟可选的?age=
和一个或多个数字。
当然,当你将它构建为正则表达式文字时,你需要转义正斜杠:
^/\/api\/users\/?(\?age=\d+)?/$
或者转义反斜杠并使用RegExp
构造函数:
new RegExp("^/api/users/?(\\?age=\\d+)?$")
答案 1 :(得分:0)
如果我理解正确,只有当它以age参数开头时才想匹配查询字符串:
/\api\/users\/?(\?age=\d+|$)/
\api\/users\/?
将匹配/ api / users或api / users /
(\?age=\d+|$)
将匹配?age = 22或字符串结尾($)
[编辑]根据您的评论,更简单的表达方式:
/\api\/users\/?(\?|$)/
(\?|$)
将匹配查询字符串的开头(?)或字符串的结尾($)
答案 2 :(得分:0)
为了完全匹配这些字符串并将其用作条件,您可以使用.test(subjectString):
(/^\/api\/users\/?(\?age=\d+)?$/).test(subjectString)
答案 3 :(得分:0)