给定字符串input_value=
<div href="asdf"></div>
<div href="1234"></div>
替换模式
var res = input_value.replace(/.+href="(\w+)".+/gm, "$1");
console.log(res) //=>asdf 1234
按预期工作
但是,当我使用new
运算符声明一个RegExp对象时(据我所知,只有这种方法可以为动态元素提供正则表达式),正则表达式失败并且我返回了整个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>
这两者的运作方式有何不同?
答案 0 :(得分:4)
尝试转发\
中的\w
:
var re = new RegExp(".+" + attribute + "=\"(\\w+)\".+", "gm");
你需要这个,因为\
是字符串中的转义字符(例如\"
转义文字"
),因此当你需要表示文字时需要转义它{ {1}}。