javascript regext匹配以固定字符串开头的网址

时间:2015-05-08 16:47:24

标签: javascript regex

我有这段代码来测试静态文件。

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(); 
}

2 个答案:

答案 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]*)?)?$/