2015-05-12 36 views
2

重音字符我有一個​​文本區域檢查禁止的話,當用戶試圖驗證。 禁止的單詞列表存儲在jsBlackList陣中,這是我的代碼部分至今:用正則表達式匹配時

var fieldValue = value; 
var hasForbiddenWord = false; 
for (i = 0; i < jsBlackList.length; i++) { 
    var regex = new RegExp("\\b"+jsBlackList[i]+"\\b","gi"); 
    fieldValue = fieldValue.replace(regex, '***'); 
    hasForbiddenWord = hasForbiddenWord || fieldValue.match(regex); 
} 
value = fieldValue; 

但問題是,jsBlackList有一些重音字符,而用戶可以在不口音寫(例如,jsBlackList可以有「似曾相識」,並且用戶已鍵入「似曾相識」,「似曾相識」或「似曾相識」)。

我如何檢查丟失的口音?

注意「標記爲重複」:重複的問題是關於「沒有重音的正則表達式來檢查帶有重音的文本」,我的是「帶重音的正則表達式來檢查可能缺少重音的文本」。

+0

你可以試試這個:'D [EE:J [AA]' –

回答

2

的一種方式重音相同的交替。

例如:"déjà"到:"d(é|e)j(à|a)"

如果你的黑名單之大,可能比你想自動完成這個更換,但它到底是方便有這樣寫的黑名單。

+4

字符類更適合於本 - d [EE] f] [AA] – CupawnTae

+0

最後,這是我使用了什麼。必須重做黑名單,但我認爲這是最好的解決方案。 – Meowcate

+0

字符類也很好。 可讀性偏好可能會決定。 –

0

我認爲最好的方法是:

  • 刪除黑名單中的所有重音字符,
  • 過程文本,以取代重音字符的非重音等效

然後你就可以比較而不用打擾口音。

+0

這將是最簡單的方式,但你可以看到我不得不更換匹配的禁字符的三倍*。如果我做你解釋,那將是難以改變只匹配單詞作爲休息或文本需要保持他的重音字符。 – Meowcate

2

您需要創建等價的,並在你的正則表達式的列表或全部等同:

替換所有字符:要做到這一點我改變你的黑名單有點

dé|ejà|a