2

文字列を考えるとinput_value=

<div href="asdf"></div>
<div href="1234"></div>

交換パターン

var res = input_value.replace(/.+href="(\w+)".+/gm, "$1"); 
console.log(res) //=>asdf 1234

期待どおりに動作します

ただし、演​​算子を使用して RegExp オブジェクトを宣言するとnew(正規表現に動的要素を指定する唯一の方法を知っている限り)、正規表現は失敗し、input_value 全体が返されます。

var attribute = "href";
var re = new RegExp(".+" + attribute + "=\"(\w+)\".+", "gm"); 
var res = input_value.replace(re, "$1"); 
console.log(res) //=> <div href="asdf"></div>
                 //=> <div href="1234"></div>

これら2つの操作方法の違いは何ですか?

4

1 に答える 1

4

\in をエスケープしてみてください\w:

var re = new RegExp(".+" + attribute + "=\"(\\w+)\".+", "gm"); 

これが必要な\のは、文字列内のエスケープ文字 (たとえば\"、literal をエスケープする") であるため、literal を表す必要がある場合はエスケープする必要があるためです\

于 2013-10-01T20:12:27.783 に答える