Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加regex以忽略/js/img和/css_Javascript_Regex_Node.js_Url - Fatal编程技术网

Javascript 添加regex以忽略/js/img和/css

Javascript 添加regex以忽略/js/img和/css,javascript,regex,node.js,url,Javascript,Regex,Node.js,Url,我有一个正则表达式 // 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})?)(\/|$)/ ); 现在,使用上述常规express会导致URL出现问题,例如: css/bootstrap.css 或 js/jquery.js 因为我的正则表达式是从A-Z或A-Z中去掉2-3个字符 我的问题是,我如何添加到这个正则

我有一个正则表达式

// 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})?)(\/|$)/ );
现在,使用上述常规express会导致URL出现问题,例如:

css
/bootstrap.css

js
/jquery.js

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

我的问题是,我如何添加到这个正则表达式中,以避免使用

js
img
css
ext

不影响原来的

我不是正则表达式方面的专家:(

负前瞻

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

\
后面不跟
js
css

首先,您没有定义要搜索的内容。 使用小写公共语言代码()定义数组 这样你就知道该找什么了


然后,将url转换为小写,并将所有的“u”替换为“-”,然后使用indexOf()搜索结果字符串中数组的每个成员.

既然您说要使用正则表达式替换文本,我就将其更改为替换函数。此外,您还强制正则表达式匹配字符串的开头;我看不出它如何匹配任何内容。总之,我的方法是:

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

您使用的是哪种语言/工具?我使用的是Javascript/node.js@anirudhi如果您编写了正确的正则表达式,则不应使用img、css和ext等字符串catched@AurelioDeRosa是的,这就是为什么我需要一些帮助来将这三个条件添加到我的regex@Ali你为什么不使用内置的URL解析器?我得到这个错误是出于某种原因r:无法调用unfinedEnd的方法'replace',请注意,若您使用的是匹配结果,那个么由于我添加了额外的“()”,所以数字已经移动了一点