2009-07-27 123 views
9

我想匹配字符串的一部分,它應該不區分大小寫。我有下面的代碼,但我從來沒有得到被替換的字符串。JavaScript正則表達式忽略案例

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

searchText變量將是「moha」或「mo」或「moh」。

如何用粗體標籤獲得匹配的東西。

+0

你要什麼,以取代SEARCHTEXT?文字字符串'searchText'還是別的? – SolutionYogi 2009-07-27 01:29:43

回答

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 

編輯:

添加了上面的代碼演示頁。

Demo →

Code

3

我認爲你正在尋找新的正則表達式,它創建一個動態的正則表達式 - 你想現在做的是匹配的字符串(不是RegExp對象):

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

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

編輯:其實這也許正是你要找的人,請不要介意^

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

嘿,我把你自己和你正在尋找的東西混淆了 - 讓我知道這些鍛鍊中的任何一種。 – 2009-07-27 01:33:22

+0

你是對的第一次:)這是一個替代不匹配 – 2009-07-27 01:36:51