0

我有这个正则表达式

// Look for /en/ or /en-US/ or /en_US/ on the URL
    var matches = req.url.match( /^\/([a-zA-Z]{2,3}([-_][a-zA-Z]{2})?)(\/|$)/ );

现在使用上面的正则表达式会导致 URL 出现问题,例如:

http://mydomain.com/css /bootstrap.css

或者

http://mydomain.com/js /jquery.js

因为我的正则表达式是从 AZ 或 az 中去掉 2-3 个字符

我的问题是我将如何添加到这个正则表达式中以不剥离任何内容

jsimgcssext

不影响原版。

我对正则表达式不是那么专家:(

4

3 回答 3

1

负前瞻?

var matches = req.url.match(/^\/(?!(js|css))([a-zA-Z]{2,3}([-_][a-zA-Z]{2})?)(\/|$)/ );

\ 没有跟随jscss

于 2013-06-29T13:07:12.107 回答
0

首先,您还没有定义您要搜索的内容。使用小写的通用语言代码(通用语言代码)定义一个数组,这样您就知道要查找什么。

之后,将您的 url 转换为小写并将所有 '_' 替换为 '-' 并使用 indexOf() 在结果字符串中搜索数组的每个成员。

于 2013-06-29T13:19:39.963 回答
0

既然您说您正在使用正则表达式替换文本,我将其更改为替换功能。此外,您强制正则表达式匹配字符串的开头;我看不出它会如何与之匹配。无论如何,这是我的方法:

var result = req.url.replace(/\/([a-z]{2,3}([-_][a-z]{2})?)(?=\/|$)/i,
  function(s,t){
    switch(t){case"js":case"img":case"css":case"ext":return s;}
    return "";
  }
);
于 2013-06-29T13:20:08.317 回答