1

あるクラス名を別のクラス名に置き換える 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/を参照してください。私は何を間違っていますか?(フィドルでは、括弧を削除すると、スクリプトは正しく機能します。)

4

1 に答える 1

3

大括弧は文字クラスを定義します。そのようなクラス内では、(単語境界) などのマーカー\bは意味をなさないため機能しません。

/\bone/とにかくあなたの場合は問題ありません-空白も単語の境界です:http: //jsfiddle.net/ThiefMaster/Z8HTE/-/\bone\b/たとえば、一致を避けるために使用することで改善できますclass="onetwothree"

于 2012-04-22T15:52:48.943 に答える