0

次の正規表現を見つけました

new RegExp("(^|\\s)hello(\\s|$)");

正規表現についてはhttp://www.javascriptkit.com/jsref/escapesequence.shtmlを参照してください..しかし、そこに\sエスケープシーケンスが表示されません..\sが空白文字を示していることは知っています...しかし、先行する\は何をしますか..どの文字がエスケープされますか? 次のドキュメントの Treewalker コードで同様の正規表現を見つけましたhttp://ejohn.org/blog/getelementsbyclassname-speed-comparison/

4

4 に答える 4

4

double\\は、文字列内のバックスラッシュをエスケープすることです。つまり、正規表現の\\ように解釈されます。\

于 2012-04-30T14:37:20.417 に答える
1

この場合の余分な \ は、\s 内の \ をエスケープすることです。文字列宣言の内部にいるため、エスケープするには \ を 2 倍にする必要があります。文字列が処理されて保存されると、(^|\s)hello(\s|$) に縮小されます。

于 2012-04-30T14:38:11.977 に答える
1

最初の文字の直後の文字\がエスケープされます。通常、 「空白」を意味するように\sエスケープします。sあなたの例では、エスケープされる文字は\.

あなたが持っているのは、(^|\s)hello(\s|$)空白または文字列の先頭のいずれかが先行し、空白または文字列の末尾が続く単語「hello」の正規表現(おそらく他の場所に渡すため)を構築する式です。

于 2012-04-30T14:39:53.773 に答える