自定义vallidator禁止特定的单词表

时间:2019-06-27 08:05:23

标签: regex angular

我需要一个自定义验证程序来禁止来自textarea字段的禁止单词的特定列表。 我完全需要这种类型的实现,我知道让用户键入查询的一部分在逻辑上是不正确的,但这正是我所需要的。

我尝试了regExp,但它的行为异常。

我的RegExp

<footer>

我的验证者

<footer>

我的formControl:

/(drop|update|truncate|delete|;|alter|insert)+./gi

它仅在某些情况下有效,而且我不明白为什么相同的字符串一次可以工作,并且如果我删除一个字符并重写它,或者有时如果我键入一个空白,则验证程序会返回OK,则该字符串不起作用。

2 个答案:

答案 0 :(得分:1)

这里有几个问题:

  • g中使用全局RegExp#test修饰符会导致意外的交替结果,并且在有效匹配后移动正则表达式索引的类似方法必须将其删除
  • .最后需要除换行符以外的任何1个字符,因此必须将其删除。

使用

/drop|update|truncate|delete|;|alter|insert/i

或者,要匹配整个单词,请使用

/\b(?:drop|update|truncate|delete|alter|insert)\b|;/i

这样,insert中的insertiondrop中的dropout不会被“捕获”(=匹配)。

请参见regex demo

答案 1 :(得分:-1)

向用户提供这种功能不是一个好主意