[英]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)。
如果您的目標是阻止而不是剝離,那么我將其實現為兩步過程。
這樣,您就不必擔心阻止某些單詞列表,並確保您正在檢查實際文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.