我正在尝试构建一个javascript函数来将一个类名替换为另一个类名。当我使用像
这样的功能时function foo(bar)
{
bar.className=bar.className.replace(/\bone/, "two");
}
上的标记
<div class="one" onclick="foo(this)"></div>
它正确地找到并用one
替换two
。但是当我使用括号括起可能在one
之前的其他字符时,\b
无法识别字符串的开头,并且没有给出匹配。例如:
function foo(bar)
{
bar.className=bar.className.replace(/[\b\s]one/, "two");
}
不起作用。甚至/[\b]one/
都不起作用。
请参阅http://jsfiddle.net/E4ph5/以了解相关信息。我究竟做错了什么? (在小提琴中,如果删除括号,则脚本可以正常工作。)
答案 0 :(得分:3)
括号定义一个字符类。在诸如\b
(单词边界)这样的类标记内部不起作用,因为它们在那里没有意义。
/\bone/
在你的情况下都很好 - 空白也是一个单词边界:http://jsfiddle.net/ThiefMaster/Z8HTE/ - 你可以使用/\bone\b/
来改善它,以避免匹配,例如class="onetwothree"