2012-04-22 47 views
1

我試圖構造一個javascript函數用另一個替換一個類名。當我使用像Javaxcript正則表達式元字符在括號內不起作用?

function foo(bar) 
{ 
    bar.className=bar.className.replace(/\bone/, "two"); 
}​ 

功能上的標記像

<div class="one" onclick="foo(this)"></div>​ 

它正確地查找和替換onetwo。但是,當我用括號包括可以先one其他字符,\b無法識別字符串的開頭,並給出了相關的結果。例如:

function foo(bar) 
{ 
    bar.className=bar.className.replace(/[\b\s]one/, "two"); 
}​ 

不起作用。甚至沒有/[\b]one/將工作。

http://jsfiddle.net/E4ph5/看到它在行動。我究竟做錯了什麼? (在撥弄,如果去掉括號,該腳本可以正常工作。)

回答

3

括號定義一個字符類。在這樣的類標記如\b(字邊界)內不起作用,因爲它們在那裏沒有意義。

/\bone/是在您的案件罰款反正 - 空白也是一個字邊界:http://jsfiddle.net/ThiefMaster/Z8HTE/ - 您可以通過使用/\bone\b/避免例如匹配改進class="onetwothree"

+0

大約只用'\ B'好一點,我甚至沒有注意到。 – 2012-04-22 15:59:28