2017-06-26 9 views
0

することができます。私はこれをしなかったとき:正規表現文字列の末尾に$を追加正規表現は、次の正規表現の発現のためのスペース

var regex = new RegExp("^(www\\.)?[0-9A-Za-z-\\[email protected]:%_\+~#=]+(\\.[a-zA-Z]{2,})+(/.*)?(\\?.*)?$"); 

つまりは、私が望む何をしている、上記の文字列の通過を防ぐことができます。

私は正規表現がどのように一致しているかを理解するのに役立つオンラインの「シミュレータ」を見つけようとしましたが、大した助けは見つかりませんでした。

+0

あなたの質問は何ですか? – revo

+0

@PeterOlson:はい、正規表現の末尾に '$'を追加することで正規表現が機能するのはなぜですか? 'gle.com'パターンとまだ一致してはいけません。 –

+0

本当ですか? @PeterOlson – revo

答えて

2

www.goo gle.comwww.[0-9A-Za-z-\\[email protected]:%_\+~#=]+にマッチされ goo(\.[a-zA-Z]{2,})+によってマッチングされ、以来、試験に合格します。対照的に、(www\\.)?と最後の2つのグループはオプションです。したがって、一致しない場合でも正規表現は満たされます。したがって、gle.comとさらに一致する必要はありません。

$を追加すると、スペースが部分式のいずれとも一致しないため、正規表現は一致しなくなります。