2

StackOverflowに関する以前の質問では、JavaScriptの正規表現のエスケープについて説明しています。例:

推奨される実装は次のとおりです。

RegExp.quote = function(str) {
     return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};

2つの言語の正規表現が同一ではないことを考えると、Javaの正規表現に使用される文字列を適切にエスケープするJavaScriptメソッドを知っている人はいますか?

4

1 に答える 1

2

逃げる必要はまったくありません。これらの質問は、正規表現がソース言語で文字列として構築されているときに何をする必要があるかについてのものです。入力フィールドから文字列を読み取っているので、心配する解釈の層はありません。

文字列をサーバーに送信するだけで、有効な正規表現であるかどうかが検出されます。

編集— 私には何も思いつきませんが、実際に心配すべきことは、この手段を通じて実行される可能性のあるあらゆる種類の「インジェクション」攻撃である可能性があります. 正規表現を渡すだけなら、Pattern.compile()悪用される可能性のある副作用チャネルはないように思えます。

于 2012-12-28T21:49:44.567 に答える