我正在尝试使用'container1$container2$chkChecked'
的正则表达式匹配名称为'.+\$chkChecked'
的元素,但是当元素名称如上所述时,我没有得到我期望的匹配。我做错了什么?
答案 0 :(得分:3)
试
string.match( /[$]chkChecked$/ )
或者,您可以尝试
string.match( /[^a-zA-Z0-9]chkChecked/ )
(另外,请确保在正则表达式周围使用//
,否则您可能会使用字符串文字进行匹配。如果没有更大的代码段,则不太明显。)
答案 1 :(得分:3)
我的猜测,通过使用引号,你做了类似
的事情re = new RegExp('.+\$chkChecked');
这将无法工作,因为js在其字符串解释中利用\作为转义,因此它永远不会进入正则表达式解释器
而不是你想要的
re = new RegExp('.+\\$chkChecked');
答案 2 :(得分:2)
有两个级别的转义:一个是首次解析代码时(例如,如果你想在字符串中包含'
),另一个在regexp引擎中。因此,在\s
之前需要两个$
才能使正则表达式引擎不将其视为特殊字符。
答案 3 :(得分:0)
它看起来应该有效。
有一个很好的Javascript Regex Tester,也说匹配。
答案 4 :(得分:0)
Steven Noble:
这将无法工作,因为js在其字符串解释中利用\作为转义,因此它永远不会进入正则表达式解释器
我打算使用\作为转义,因为我真的在元素名称中寻找$。