复杂REGEX到Block Porn基于预定义的文本字符串

时间:2012-07-20 22:44:20

标签: regex

我正在寻找完美的1行正则表达式模式,以阻止使用我的内容拦截软件的大量色情明星名称。

该软件完全符合正则表达式,并且可以接受任何写得很好的正则表达式。

作为一个例子,这里是我当前使用的那一行 - 这些行在某种程度上是相同的,其中第一个阻止一切开始,第二个阻止以我的预定义词列表结尾的一切。

(\b(cohf|cock(s)?|cum(s)?|cutie(s)?|creamy(-)?pie(s)?))(-)?\w+\b
\w+(-)?((cam(s)?|cohf|cock(s)?|cum(s)?|cutie(s)?|creamy(-)?pie(s)?)\b)

现在,我有一个类似的列表:

**pornstar1 name**
pornstar2 name
pornstar3 name
some-other name-here

我希望提供的正则表达式能够阻止任何/所有网址,其中名称的两个部分出现 - 示例:

  • www.alink-to- pornstar1 .com< - 未被阻止(仅限部分内容) 名字在这里)
  • www.alink-to- pornstar1-name .com< - 封锁(已 两部分)

提前谢谢

1 个答案:

答案 0 :(得分:2)

  1. 获取网址并移除所有[^a-zA-Z] - 将其替换为空字符串
  2. 列出所有不允许的单词或短语,并与(1)
  3. 相同
  4. 现在使用此列表将所有带|字符的关键字加入一个正则表达式字符串
  5. 检查此正则表达式是否与您在(1)
  6. 处修改的URL匹配

    拥有变量urllist,单行jQuery解决方案将是:

    url.replace(/[^a-z]/gi,'').match(new RegExp("("+$.map(list,function(e){return e.replace(/[^a-z]/gi,'');}).join('|')+")"))!=null
    

    如果true包含url中的一些受限制的字词或短语,则结果为list