4

Bad escapement次のコードを使用してJSHintでエラーが発生する理由を知っている人はいますか?

var regexS = '[\?&]' + name + '=([^&#]*)';
4

2 に答える 2

6

ダブルエスケープするだけです\

var regexS = '[\\?&]' + name + '=([^&#]*)';

この文字列をオブジェクトに使用することになると思いますがRegex、文字列内の文字は正しくエスケープする必要があります。デフォルトでは、a\は次の文字をエスケープしようとします。のようなものを追加すると\\、オリジナルがエスケープされ、最終的な文字列で\単一に評価されます。\

于 2012-11-01T00:28:18.033 に答える
4

\? は有効なエスケープ文字ではありません。\\ に置き換えてみてください。

したがって、次のようになります。

var regexS = '[\\?&]' + name + '=([^&#]*)';

「\」はその後に続く文字をエスケープすることに注意してください。これが、\\ が 1 つのスラッシュとして出てくる理由です (この質問のソースを見ると、\ を 4 倍にする必要があることがわかります)。

その他の一般的なエスケープ シーケンスは、改行の \n とタブの \t です。

于 2012-11-01T00:27:27.930 に答える