1

我正在尝试构建一个 javascript 函数来用另一个类名替换一个类名。当我使用类似的功能时

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/以查看它的实际效果。我究竟做错了什么?(在小提琴中,如果您删除括号,则脚本可以正常工作。)

4

1 回答 1

3

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

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

于 2012-04-22T15:52:48.943 回答