2008-09-18 108 views
1

我试图用名称为'container1$container2$chkChecked'的元素匹配,使用'.+\$chkChecked'的正则表达式,但是当元素名称与描述相同时,我没有收到匹配结果。我究竟做错了什么?JavaScript正则表达式元素匹配

+0

那么你期待什么,你会得到什么? – Sietse 2008-09-18 11:06:13

回答

3

我的猜测,您使用引号,是你不喜欢的东西

re = new RegExp('.+\$chkChecked'); 

因为JS发生在它的字符串解释优势\作为一种逃避,这将不会起作用,所以它永远不会使它成正则表达式解释

,而不是你想

re = new RegExp('.+\\$chkChecked'); 
3

尝试

string.match(/[$]chkChecked$/) 

或者,你可以尝试

string.match(/[^a-zA-Z0-9]chkChecked/) 

(另外,请确保您的使用//在你的正则表达式,否则你可能会使用字符串文字匹配。没有一个不是很明显寿较大的代码片段)

0

史蒂芬贵族:

这将无法工作,因为JS利用了\在其串解释为转义所以它永远不会使它进入正则表达式解释

我打算用\作为因为我真的想在元素名称中寻找一个$,所以逃生。

2

有两个级别的转义:一个是当你的代码首先被解析时(例如,如果你想在字符串中包含'',第二个在正则表达式引擎中。因此,在$之前需要两个\以使正则表达式引擎不将其视为特殊字符。