Angular FormControl 模式验证器不能使用正则表达式

埃隆

我正在尝试对文本输入进行一些限制。

我希望它只接受:

  • 字母数字字符(az AZ 0-9)
  • 3 个特殊字符(逗号、破折号、单引号) : , - '
  • 一些重音字符:à â ç è é ê î ô ù û
  • 空间

所以我向输入声明了一个带有正则表达式模式的验证器,如下所示:

this.form.addControl('adresseLine2', new FormControl('', Validators.pattern(PatternValidatorEnum.ADRESS_CONTENT)));

ADRESS_CONTENT正则表达式如下:

ADRESS_CONTENT = '^[A-Za-z0-9\',\-àâçèéêîôùû ]*$'

它似乎工作正常,但是,当我有大写重音字符时,输入保持有效,例如: É

我希望它只接受小写的重音字符 ( àâçèéêîôùû)

并且根据https://regex101.com/r/6vyA8H/1dsdséàê ké应该是有效的输入,但dsdséàê kÉ不应该。

但是,对于我的输入,两者都被认为是有效的。

此外,我的输入接受诸如., 之类的字符;/当它不应该根据正则表达式时。

我错过了什么?此外,我的正则表达式中可能忘记了某些情况。

蒂亚戈席尔瓦

这里的问题不是您的表达式,而是您使用Validators.Pattern()字符串而不是RegExp类型,将表达式从

'^[A-Za-z0-9\',\-àâçèéêîôùû ]*$'

/^[A-Za-z0-9\',\-àâçèéêîôùû ]*$/

将解决问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章