2

我正在寻找完美的 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

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

  • www.alink-to- pornstar1 .com <-- 没有被屏蔽(这里只有名字的一部分)
  • www.alink-to- pornstar1 -name .com <-- 被阻止(有两个部分)

先感谢您

4

1 回答 1

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

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

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

结果是trueifurl包含来自list.

于 2012-07-20T23:28:31.247 回答