1

私の現在のコードは次のようなものです:

var regex = '@([a-z0-9_]+)';
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>');

しかし、「hello this is @test!」のような文を入力すると、何も変更されず、プレーンテキストで表示されます。

なぜこうなった?

4

1 に答える 1

5

これregexは、文字列として作成したためです。メソッドに文字列を渡すとreplace、正規表現として扱われません。置換する文字列のリテラル オカレンスを探します。

代わりに正規表現リテラルを使用します。

var regex = /@([a-z0-9_]+)/;
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>');

RegExpまたは、コンストラクターを呼び出します。

var regex = new RegExp('@([a-z0-9_]+)');
replacedText = replacedText.replace(regex, '<a href="http://blah.com/$1">$1</a>');

これが実際のデモンストレーションです。

于 2013-10-03T20:15:30.677 に答える