Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式在字面上声明时有效,但在使用新运算符和变量值声明时无效_Javascript_Regex - Fatal编程技术网

Javascript 正则表达式在字面上声明时有效,但在使用新运算符和变量值声明时无效

Javascript 正则表达式在字面上声明时有效,但在使用新运算符和变量值声明时无效,javascript,regex,Javascript,Regex,给定字符串input\u value= <div href="asdf"></div> <div href="1234"></div> 工作如期进行 但是,当我使用new操作符声明一个RegExp对象时(据我所知,为regex提供动态元素的唯一方法),regex失败,我得到返回的整个输入值: var attribute = "href"; var re = new RegExp(".+" + attribute + "=\"(\w+)\".+",

给定字符串
input\u value=

<div href="asdf"></div>
<div href="1234"></div>
工作如期进行

但是,当我使用
new
操作符声明一个RegExp对象时(据我所知,为regex提供动态元素的唯一方法),regex失败,我得到返回的整个输入值:

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>
var attribute=“href”;
var re=new RegExp(“.+”+属性+”=\”(\w+\”+“,“gm”);
var res=输入值。替换(re,“$1”);
console.log(res)/=>
//=> 

这两种操作方式有什么区别?

尝试在
\w
中转义
\

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

您需要它,因为
\
是字符串中的转义字符(例如
\“
转义文本
),所以当您需要表示文本
\

时,需要转义它尝试转义
\w
中的
\

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

您需要它,因为
\
是字符串中的转义字符(例如
\“
转义文本
),所以当您需要表示文本
\

时,您需要转义它。谢谢您,这就像一个符咒。为什么我要逃避它呢?好吧,就在那里,就在文件里。再次感谢!出于同样的原因,您需要对双引号进行转义:它对字符串有特殊的含义,因此需要对其进行转义,以保持其对regexThank you的“正常”含义,它的工作方式就像一个符咒。为什么我要逃避它呢?好吧,就在那里,就在文件里。再次感谢!出于同样的原因,您需要转义双引号:它对字符串有特殊的含义,因此需要转义以保持其对正则表达式的“正常”含义