2012-07-11 90 views
0

我正在使用正則表達式搜索酒店列表。有「測試酒店廣場」,「testing2新酒店廣場」,「廣場酒店」等名稱....查找以給定搜索字符串開頭的詞數 - Regex

基本上我的要求是,如果用戶輸入廣場,然後所有的酒店應該填充其中包含「廣場」...但如果用戶鍵入「aza」,則不應填充結果。總之,在給定的字符串中,我需要查找是否有任何以用戶輸入的字符串開頭的單詞,如果是,則顯示結果。

這是一個代碼,我卡住了,不工作。

var regex = new RegExp("/\b"+searchString, "gi"); 
if (mainString.match(regex)) 
{ 
    return true; 
} 

這是工作,但它是找到所有出現哪怕是一箇中間人物或者我不希望任何位置。

var regex = new RegExp(searchString , "gi"); 
if (mainString.match(regex)) 
{ 
    return true; 
} 

回答

1

當調用RegExp構造像這樣,正則表達式是不是包圍在斜槓(/.../),但你有一個領導着你的字串凶多吉少。此外,轉義序列反斜槓需要轉義自己,所以你應該用什麼

var regex = new RegExp("\\b"+searchString, "gi"); 

編輯:

是的,因爲\b相對於[A-Za-z0-9_]定義的,這確實是有問題的,當談到到非ASCII字符。你也許可以解決它使用或多或少複雜lookarounds,但更簡單的解決方案,將最有可能在這裏做的伎倆是說,searchString應該從頭或空白字符後發現之一:

var regex = new RegExp("(?:^|\\s)"+searchString, "gi"); 
+0

謝謝..這就是我想要的...只有一個小問題。當有像「Väst」這樣的詞,並且如果我用「st」搜索時,這會得到顯示,儘管它不是以「st」開頭...... ....是否有任何特定的原因或不同語言的代碼? – Kalish 2012-07-11 14:42:06

+0

我發現這篇文章,但我不能完全理解..... http://stackoverflow.com/questions/3507453/regex-match-for-beginning-of-multiple-words-in-string – Kalish 2012-07-11 14:43:00

+0

看到我編輯回答 – 2012-07-11 14:53:46