Javascript 在RegExp中使用带转义字符的变量

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

您好,我有以下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"); 我做错了什么


谢谢

您不需要
转义
您的
转义
登录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 ')'