Javascript正则表达式字符在括号内不起作用?

时间:2012-04-22 15:50:21

标签: javascript regex

我正在尝试构建一个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/以了解相关信息。我究竟做错了什么? (在小提琴中,如果删除括号,则脚本可以正常工作。)

1 个答案:

答案 0 :(得分:3)

括号定义一个字符类。在诸如\b(单词边界)这样的类标记内部不起作用,因为它们在那里没有意义。

无论如何,

/\bone/在你的情况下都很好 - 空白也是一个单词边界:http://jsfiddle.net/ThiefMaster/Z8HTE/ - 你可以使用/\bone\b/来改善它,以避免匹配,例如class="onetwothree"