簡體   English   中英

javascript正則表達式匹配排除空格和特殊字符

[英]javascript regular expression match exclude space and special charcters

正在設置一組受限關鍵字

在我的評論/消息發布塊中,不應允許使用我定義的受限詞。

例如:關鍵字是“ facebook”。

facebook,FaceBook,facebook,f * a * c * e * b * o * o * k,facebook,(臉書),“ facebook”這些詞不應發布。

在Java腳本中使用正則表達式的任何想法將不勝感激。

我不確定這是個好主意,但可以使用

var isFacebook = /f\W*a\W*c\W*e\W*b\W*o\W*o\W*k/i.test(str);

請注意,您可以輕松地從單詞中生成這樣的模式,從而可以輕松地通過字典進行擴展:

var r = new RegExp("facebook".split('').join('\\W*'), 'i');

試試這個正則表達式:

f[^a-zA-Z0-9]?a[^a-zA-Z0-9]?c[^a-zA-Z0-9]?e[^a-zA-Z0-9]?b[^a-zA-Z0-9]?o[^a-zA-Z0-9]?o[^a-zA-Z0-9]?k

它將符合以下條件:

facebook
f a c e b o o k
f-a-c-e-b-o-o-k
f*a*c*e*b*o*o*k

但將不符合以下條件:

facesbooks
ffaceebbookss

您可以使用類似於提供的正則表達式來檢測此類單詞。

如果您要過濾給定的單詞,請用單詞邊界將其包圍,並用可能的特殊字符分隔該單詞的字母:

var keyword="facebook",
    specialCharClass="[*-]",
    regex;
regex= new RegExp("\\b" + keyword.replace(/(?:)/g,specialCharClass+'?') + "\\b",'g');

"hi(facebo-ok)pie".replace(regex,"__________"); //returns "hi(__________)pie"

但是,總有繞過字過濾器的方法(例如,faceb00k)。

如果您的目標是阻止而不是剝離,那么我將其實現為兩步過程。

  1. 去除所有非文本,將1337轉換為普通文本(例如leet),等等
  2. 檢查禁止的單詞,如果有問題請阻止

這樣,您就不必擔心阻止某些單詞列表,並確保您正在檢查實際文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM