2015-10-02 35 views
0
var testString = "This string has a bad word in it to test"; 

function findBadWords(string) { 
    var badWord = /\bbad\b | \bword\b | \btest\b/gi 
    var isBadWord = string.match(badWord); 
    if (isBadWord) { 
    newString = string.replace(badWord," *** "); 
    } 
    document.write(newString); 
} 
findBadWords(testString); 

所以我現在正在用RegExp進行練習,並遇到了一個我不明白的問題。在上面的代碼中,我設置了一個RegExp來查找字符串中的「壞詞」。根據我所能說的,只要在單詞前後存在單詞邊界,我就已經設置它來查找單詞「壞」,「單詞」和「測試」。我遇到的問題是「單詞」不被替換。如果我在「單詞」之前放置了一個非badWord,它將被替換,但不會以其他方式進行替換。我曾嘗試脫掉一些單詞邊界或添加一些無字界限而沒有運氣。任何人都不介意解釋爲什麼這段代碼的工作方式是這樣的,我該如何修復它?問題替換正則表達式中的RegExp條款

謝謝!

此外,我知道使用document.write是一個糟糕的選擇,但它只是爲了測試我發誓!

回答

0

這裏的問題是\b旁邊的空白字符。如果你從你的正則表達式中刪除空格,它運作良好。

var testString = "This string has a bad word in it to test"; 

function findBadWords(string) { 
    var badWord = /\bbad\b|\bword\b|\btest\b/gi 
    var isBadWord = string.match(badWord); 
    if (isBadWord) { 
     newString = string.replace(badWord," *** "); 
    } 
    document.write(newString); 
} 
findBadWords(testString); 
+0

啊當然!謝謝你的快速反應!! –