Javascript 在RegExp中使用带转义字符的变量
您好,我有以下JavaScript正则表达式: var re = new RegExp("\\[(\\d{8})([,|;]\\s*\\d{8})*\\]", "g"); bs = $("#myid"); left = bs.attr('left'); right = bs.attr('right'); var re = new RegExp(left + "(\\d{8})([,|;]\\s*\\d{8})*" + right, "g"); 我做错了什么Javascript 在RegExp中使用带转义字符的变量,javascript,jquery,regex,escaping,Javascript,Jquery,Regex,Escaping,您好,我有以下JavaScript正则表达式: var re = new RegExp("\\[(\\d{8})([,|;]\\s*\\d{8})*\\]", "g"); bs = $("#myid"); left = bs.attr('left'); right = bs.attr('right'); var re = new RegExp(left + "(\\d{8})([,|;]\\s*\\d{8})*" + right, "g"); 我做错了什么 谢谢您不需要转义您的转义登录htm
谢谢您不需要
转义
您的转义
登录html属性
这些仅在javascript的字符串中需要
替换
\\[
单身
\[
在您的属性中。Chrome,Mac OS X-works。对我也适用Chrome,Windows。嗯,当您显式设置变量时,它似乎起作用。但是我从元素的属性中获取变量。请参阅我编辑的问题。这对你们有用吗?好的,现在您完全改变了问题-$(“#myid”)上的html是什么?更新后,请参阅@Adassko的答案。我认为它会解决问题。假设html最初看起来像
,这肯定是正确的答案。此外,定义的正则表达式实际上是对所有内容的双重转义,包括\d、\s。应该看起来像left+”(\d{8})([,|]\s*\d{8})*”+right
。@r3mus:不正确-您需要在这里双重转义-一次用于javascript,一次用于regexp。有两种方法可以在javascript中定义正则表达式-在字符串中,如上例所示,或在斜杠之间,如/(\d{8})([,|]\s*\d{8})*/
-在这种情况下,您不需要添加额外的斜杠哦,确实是正确的。left+“(\\d{8})([,|]\\s*\\d{8})*”+right
是正确的。
bs = $("#myid");
left = bs.attr('left');
right = bs.attr('right');
var re = new RegExp(left + "(\\d{8})([,|;]\\s*\\d{8})*" + right, "g");
Uncaught SyntaxError: Invalid regular expression: /\\[(\d{8})([,|;]\s*\d{8})*\\]/: Unmatched ')'