2016-10-04 132 views
-1

我想弄清楚的正則表達式爲如果字符串包含空格不匹配的字符串一個空格不匹配。例如如果字符串中包含的JavaScript

「的」不應與「的」

「豪斯醫生」不應與「豪斯醫生」

+2

什麼是您的具體目標是什麼?你試試? 這可能會幫助你:https://regex101.com/r/CpR8xb/1 – Wikunia

+0

那麼爲什麼要使用正則表達式呢? '如果(A == B){}' – epascarello

+0

@wikunia我的目標是尋找在我的搜索引擎特定的書籍,因此,例如,如果我輸入「家」就應該自動提示類似「室友」,但如果我鍵入「房子「(與房子後面的空間),它應該自動建議像」房子卡「 –

回答

0

您可以檢查搜索字符串是否是內部的任何的清單中的書籍。

var matches = function(search, books) { 
    return books.filter(function(book) { 
    return book.indexOf(search) !== -1 
    }) 
} 

我不認爲你需要在這種情況下的正則表達式。

請參閱「房子」是不是裏面的房子「,但

+1

我會建議不要使用正則表達式,除非用戶知道如何使用它們。例如,搜索「mr.hide」的用戶會匹配「mrahide」,搜索「a * book」會匹配「aaa book」和「這是真的嗎?」會匹配「是這個原因」。如果這對你沒有意義,想象你可憐的用戶...... – Aaron

+0

是的,這個正則表達式的例子很糟糕。我已經刪除它 – Eoin

0

您可以使用startsWith(),使其適合您的要求,使用填充工具對老年人/不支持的瀏覽器內「的房子」。

var strings = ["HouseArrest", "House arrest", "HouseOfCards", "House of cards"]; 
 

 
function search(val){ 
 
    var res = strings.filter(i=>i.startsWith(val)); 
 
    console.clear(); 
 
    console.log(JSON.stringify(res)); 
 
    }
<input onkeyup="search(this.value)" type="text"/>