2014-02-25 20 views
0

我目前正在做一個正則表達式比較,以從用戶寫入文本字段中刪除單詞(粗言穢語)。目前它會在用戶點擊空格時執行檢查,如果匹配則刪除單詞。但是,即使它是另一個詞的一部分,它也會刪除該詞。所以如果你輸入蘋果後跟空格,它將被刪除,沒關係。但是,如果你輸入applepie後跟空格,它將刪除'apple'並離開pie,這並不好。我試圖讓它在這種情況下,如果蘋果是另一個詞的一部分,它不會被刪除。Javascript/jquery - 如何替換一個詞,但只有當不是另一個詞的一部分?

有沒有什麼辦法可以只對整個單詞進行比較,或者如果與其他字符結合可以忽略比較?

我知道這可以讓人們寫出許多沒有空間的粗魯的東西。但是,這是由該給我的命令:(

感謝任何幫助的人想要的效果。

function rude(string) { 

var regex = /apple|pear|orange|banana/ig; 
//exaple words because I'm sure you don't need to read profanity 

var updatedString = string.replace(regex, function(s) { 
    var blank = ""; 
    return blank; 
}); 
return updatedString; 
} 

$(input).keyup(function(event) { 
    var text; 
    if (event.keyCode == 32) { 
     var text = rude($(this).val()); 
     $(this).val(text); 
     $("someText").html(text); 
    } 
} 
+0

如果你喜歡我的回答,接受它,將不勝感激。 – sabof

回答

2

您可以使用單詞邊界(\b),匹配0的字符,但只是剛剛開始或詞的結尾。我還使用分組(括號),所以它更容易閱讀的寫這樣的表達式。

var regex = /\b(apple|pear|orange|banana)\b/ig; 

順便說一句,在你的榜樣,你不需要使用的功能。這已足夠:

function rude(string) { 
    var regex = /\b(apple|pear|orange|banana)\b/ig; 
    return string.replace(regex, ''); 
} 
相關問題