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