2008-09-18 126 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

有兩個級別的轉義:一個是當你的代碼首先被解析時(例如,如果你想在字符串中包含'',第二個在正則表達式引擎中。因此,在$之前需要兩個\以使正則表達式引擎不將其視爲特殊字符。