2009-07-27 18 views
9

文字列の一部と一致させようとしていますが、大文字と小文字を区別しないでください。私は次のコードを持っていますが、私は置換された文字列を得ることはありません。JavaScript正規表現を無視する

var name = 'Mohammad Azam' 
var result = name.replace('/' + searchText + '/gi', "<b>" + searchText + "</b>"); 

searchText変数は、「moha」または「mo」または「moh」になります。

どのように太字タグで一致するものを得ることができます。

+0

何あなたが検索テキストを交換したいのですか?リテラル文字列 'searchText'か他の何か? – SolutionYogi

答えて

20

/パターン/あなたがそのような文字列を構築していない場合は、意味があります。 (私はその上の100%を確認していない)

var name = 'Mohammad Azam'; 
var searchText = 'moha'; 
var result = name.replace(new RegExp('(' + searchText + ')', 'gi'), "<b>$1</b>"); 
//result is <b>Moha</b>mmad Azam 
を試してみてくださいEDIT:

は、上記のコードのためのデモページを追加しました。

Demo →

Code

+1

括弧付きのRegExpを構築する必要はありません –

+1

彼は一致をキャプチャしてタグで囲みたいと考えています。 カッコなしでキャプチャを実行することはできません。 – SolutionYogi

+0

はい、検索文字列が置換タグの周囲のタグと同一の場合は可能です。 –

3

私はあなたが動的な正規表現を作成する新しい正規表現、探していると思います - あなたが今何をしようとして文字列(ではない正規表現オブジェクト)と一致している:

var name = 'Mohammad Azam', searchText='moha'; 

var result = name.replace(new RegExp(searchText, 'gi'), "" + searchText + ""); result 

EDIT:実はそれはリテラルとして入れていますとき、これはあなたが探していたものはおそらくあり、用事^

var name = 'Mohammad Azam', searchText='moha'; 
name.match(new RegExp(searchText , 'gi'))[0] 
name // "Moha" 
+0

heh、私はあなたが探していたものと自分を混同しました。 –

+0

初めての時でした:)それは一致しない置換です –