当前位置: 首页 > 知识库问答 >
问题:

带有特殊字符的坏话过滤器

章飞章
2023-03-14

我正在使用https://www.npmjs.com/package/bad-words我为过滤特殊字符创建了正则表达式。

const Filter = require('bad-words');
const badWordsFilter = new Filter({replaceRegex:  /[A-Za-z0-9öÖÇ窺ĞğİıÜü_]/g});
badWordsFilter.addWords(['badword', 'şğ'])

如果单词不包含土耳其语字符,它可以工作。但是如果我写土耳其语字符,如或,这不是过滤。

我的正则表达式错了吗?

我在文档中发现了以下代码:

var filter = new Filter({ regex: /\*|\.|$/gi });
var filter = new Filter({ replaceRegex:  /[A-Za-z0-9가-힣_]/g }); 
//multilingual support for word filtering

共有3个答案

白弘伟
2023-03-14

您需要将u标志添加到正则表达式中,使其能够识别Unicode。更准确地说,将/[A-Za-z0-9öŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ。不过,这只适用于现代浏览器(基本上,除了Internet Explorer以外的所有浏览器)。还有其他选择,您可能需要考虑是否支持旧浏览器。

嵇弘新
2023-03-14

请您尝试一下:

var filter=newfilter({replaceRegex:/(\w)/gi})

当然,您必须使用replace eRegex选项。

该模式与所有情况都不完全匹配。

以下是/(\w)/gi的描述性功能(感谢regex101):

  1. 第一捕获组(\w)。
    1. \w匹配任意单词字符(等于[a-zA-Z0-9_])
    2. 量词-一次和无限次之间的匹配,尽可能多的次数,根据需要回报(贪婪)
    1. i修饰语:不敏感。大小写不敏感匹配(忽略[a-zA-Z]的大小写)
    2. g修饰符:全局。所有比赛(第一场比赛后不返回

阎渝
2023-03-14

你显然有一个编码问题,因为你的正则表达式在你的应用程序中工作,请参见这里:https://regex101.com/r/VpItfH/3/.

因此,我认为在应用程序的正则表达式中编码字符可能会有所帮助:

在这里查看编码的正则表达式结果:https://regex101.com/r/VpItfH/4/

更多细节

在PCRE正则表达式引擎中尝试以下编码正则表达式将起作用(https://regex101.com/r/VpItfH/5):

/[A-Za-z0-9\x{f6}\x{d6}\x{c7}\x{e7}\x{15e}\x{15f}\x{11e}\x{11f}\x{130}\x{131}\x{dc}\x{fc}_]/g

但是当选择javascript regex引擎时,{}会破坏Unicode,所以您需要删除它们,如果无法识别字符,请将\x替换为\u0。例如\x{15e}变为\u015e

然后,您可以使用/[A-Za-z0-9öÖ窺ĞĞİıÜÜ]/g进行相同的匹配。

注意:要获取字符的unicode格式,可以执行“Ğ”。charCodeAt(0)。toString(16)并在其前面加上\x\u0

希望这能有所帮助,至少承认您可以在正则表达式中编码字符,并且仍然匹配相同的字符。:)

 类似资料:
  • 问题内容: 我遇到了一个大问题,即通过jQuery Ajax将数据作为JSON发布到我的服务器。JSLint表示数据正常,并且请求的Content- Type设置为。服务器在PHP 5.2.11上运行,所以我不能使用。 我尝试了url_decode,utf8_decode和html_entities_decode,但似乎没有任何效果。 返回null,但如果执行此操作,一切正常。是发布数据:。 这是

  • 我想使用platformRequest拨打以下格式的号码: 但我得到了一个无效的数字错误,有可能吗?

  • 问题内容: 我正在开发一个使用jQuery,PHP和JSON作为响应的依赖选择脚本。 除了使用特殊字符(如法语(é,è,à…))外,其他所有内容都运行良好 如果我像(é,è和à)那样对它们进行预编码(这里我在&符和单词的其余部分之间使用空格以防止在我的问题中进行自动编码)它可以工作,但是当使用jquery渲染字符时不会转换为应具有的外观(é…),而是按原样

  • 在这一节将实现一个更复杂的EL自定义函数的例子。 例子 : 过滤HTML格式中的特殊字符 1. 实例说明 该示例的功能是替换HTML格式中的特殊字符,这些特殊字符如表7.6所示。 表7.6 特殊字符和替换字符串对照表 特殊字符 替换字符串 <  &lt; >  &gt; & &amp; " &quot; 空格 &nbsp; 2. 使用Tomcat自带的例子来实现EL自定义函数 在Tomcat自带的

  • 问题内容: 我们需要从Typescript中的node.js代码中调用REST API,并希望具有用于请求和响应的相应类型。不幸的是,给定接口的JSON包含以下字段: 我们被告知,这是由于另一端的自动化“ JSONifier”的局限性而无法更改的。我们如何设置适合于此的接口?以下显然不起作用: 问题答案: 就像JS对象一样,您可以用引号将名称引起来,如下所示:

  • 我有一个集合的联系人结构如下: 因为“susan@xpto.com”上的点 如何逃脱这点? 我尝试了和但没有成功。