1
hidValue="javaScript:java";
replaceStr = "java";
resultStr=hidValue.replace("/\b"+replaceStr+"\b/gi","");

resultStr にはまだ「javaScript:java」が含まれています

上記のコードは、正確な文字列 java を置き換えていません。しかし、コードを変更して値「java」を直接渡すと、正しく置き換えられます。

hidValue="javaScript:java";
resultStr=hidValue.replace(/\bjava\b/gi,"");

resultStr には「javaScript:」が含まれています

したがって、完全に一致するものだけが置き換えられるように、関数を置き換えるために変数をどのように渡す必要がありますか。

4

3 に答える 3

4

replace-function は、最初の引数として文字列ではなく、正規表現オブジェクトを取ります。この 2 つを混同してはいけません。結合された文字列から RexExp オブジェクトを作成するには、適切なコンストラクターを使用します。

resultStr=hidValue.replace(new RegExp("\\b"+replaceStr+"\\b","gi"),"");

二重のバックスラッシュに注意してください: 正規表現にバックスラッシュが必要ですが、バックスラッシュは文字列内のエスケープ文字としても機能するため、二重にする必要があります。

于 2010-12-01T07:32:01.763 に答える
3

/\bjava\b/giあるケースでは正規表現literalを渡し、別のケースではstringを渡していることに注意してください"/\bjava\b/gi"。文字列をパターンとして使用する場合、はその文字列String.replaceを探しますが、パターンを正規表現として扱いません。

変数を使用して正規表現を作成する必要がある場合は、次のようにします。

new RegExp("\\b" + replaceStr + "\\b", "gi")

見る:

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace

于 2010-12-01T07:26:57.837 に答える