2

RegExr で動作する正規表現がありますが、ブラウザーで無効なグループ例外がスローされます。猫のように、s の前にあるものを除いて、すべての一重引用符を削除しようとしています。問題がどこから来ているのかわかりません。ところで、ご覧のとおり、 -- および # 記号とその 16 進数のパートナーも削除しています。

return str.replace(/(\%27)|(?<![a-z])'|'(?!s\b)|(\-\-)|(\%23)|(#)/gi, "-restricted-");

ありがとう...

4

1 に答える 1

0

(?<![a-z])javascriptには後読みが存在しないため、これが問題です。JavaScript で正規表現のテストを行いたい場合は、regexpalなどの JavaScript 用のオンライン ツールを使用します。

何をしようとしているのかわかりませんが、次のコードを試すことができます。

return str.replace(/%2[37]|(^|[^a-z])'|'(?!s\b)|--|#/gi, "$1-restricted-");

否定の後読み(?<![a-z]) (つまり、前に文字がない)をキャプチャ グループ(^|[^a-z]) (つまり、文字列の先頭または文字ではない文字)に置き換えました。ルックアラウンドのような単純なチェックではなく一致するため、置換によってこの「非文字」が削除されます。次に、この最初のキャプチャ グループ ( $1) への参照を置換パターンに入れ、それ自体を置換します。

于 2013-08-30T23:36:08.317 に答える