我有这段代码来测试静态文件。
if (/\.(html|css|js|png|jpg|jpeg|gif|ico|xml|rss|txt|eot|svg|ttf|woff|woff2|cur)(\?((r|v|rel|rev)=[\-\.\w]*)?)?$/.test(req.url)) {
next();
} else {
proxy.web(req, res);
}
但是,我想将其更改为支持以/ api /或/ auth /开头的网址调用。任何人都可以帮我正则表达式吗?
if (/*expression to test here */).test (req.url) {
proxy.web (req.res);
}
else {
next();
}
答案 0 :(得分:1)
这应该这样做。
if (/^\/(api|auth)\//.test('/auths/login')) {
alert('Match');
} else {
alert("No Match");
}
示例:https://jsfiddle.net/moobv6u9/(目前显示的网址不准确,请摘下s
并应该有效。
这要求字符串以/api/
或/auth/
开头,仅此而已。 |
适用于"或"括号组是两个值。如果您希望它不区分大小写,请在正则表达式https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp中的最后i
之后使用/
标记/修饰符。
答案 1 :(得分:0)
您提供的示例正则表达式:
/\/(html|css|js|png|jpg|jpeg|gif|ico|xml|rss|txt|eot|svg|ttf|woff|woff2|cur)(\?((r|v|rel|rev)=[\-\.\w]*)?)?$/.test(req.url))
匹配以下表达式:
/html
/html?
/html?r=(characters of kind alphanumeric,-,.)
而r可以用v,rel,rev代替 和html可以替换为任何提供的扩展名。
为了在之前添加/ api,您需要使用" \"来转义/ char。因为在javascript regexp中它表示正则表达式的开头/结尾。 因此正则表达式将具有" \ / api"在开头添加。 要添加auth选项,您应该使用| (或)用相应的括号标记:" \ /(api | auth)"。 最终,正则表达式将如下所示:
/\/(api|auth)\/(html|css|js|png|jpg|jpeg|gif|ico|xml|rss|txt|eot|svg|ttf|woff|woff2|cur)(\?((r|v|rel|rev)=[\-\.\w]*)?)?$/