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>

这两者的运作方式有什么不同?

4

1 回答 1

4

尝试转义\in \w

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

你需要这个因为\是字符串中的转义字符(例如\"转义文字"),所以当你需要表示文字时需要转义它\

于 2013-10-01T20:12:27.783 回答