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//jquery.jsjs _

私の正規表現は、AZまたはazから2〜3文字を取り除くためです

私の質問は、この正規表現にどのように追加して、何も取り除かないようにするかです

jsまたはimgまたはcssまたはext

オリジナルに影響を与えることなく。

私は正規表現の専門家ではありません:(

4

3 に答える 3

1

否定先読み?

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

\ jsまたはが続かないcss

于 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 に答える