Javascript Angular FormControl模式验证程序不使用正则表达式
我试图对文本输入有一些限制 我希望它只接受:Javascript Angular FormControl模式验证程序不使用正则表达式,javascript,html,regex,angular,forms,Javascript,Html,Regex,Angular,Forms,我试图对文本输入有一些限制 我希望它只接受: 字母数字字符(a-z a-z 0-9) 3个特殊字符(逗号、破折号、单引号):,-' 几个重音字符:èèèèùè 空间 因此,我向输入声明一个带有正则表达式模式的验证器,如下所示: this.form.addControl('adresseLine2', new FormControl('', Validators.pattern(PatternValidatorEnum.ADRESS_CONTENT))); 而address\u内容regex
- 字母数字字符(a-z a-z 0-9)
- 3个特殊字符(逗号、破折号、单引号):,-'
- 几个重音字符:èèèèùè
- 空间
this.form.addControl('adresseLine2', new FormControl('', Validators.pattern(PatternValidatorEnum.ADRESS_CONTENT)));
而address\u内容
regex如下所示:
ADRESS_CONTENT = '^[A-Za-z0-9\',\-àâçèéêîôùû ]*$'
它似乎工作得很好,但是,当我使用大写重音字符时,输入仍然有效,例如:É
我希望它只接受小写重音字符(字符)
根据:dsdsêké
应为有效输入,但dsdsêkê
不应为有效输入
但是,在我的输入中,两者都被认为是有效的
此外,我的输入还接受字符,如
,代码>,/
当它不应该根据正则表达式
我错过了什么?另外,我可能在正则表达式中忘记了一些情况。使用这个正则表达式模式怎么样
/^(?!À-Ö)[A-Za-z0-9\',\-àâçèéêîôùû ]*$/
您可以说排除上面的重音字符。这个正则表达式支持您的所有输入
Stackblitz:这里的问题不是您的表达式,而是您使用Validators.Pattern()
和字符串而不是RegExp
类型,将表达式从
“^[A-Za-z0-9\',\-A-çèèèèèèèèùè]*$”
到
/^[A-Za-z0-9\',\-Açèèèèù]*$/
将解决此问题。addressèu CONTENT='[A-Za-z0-9\',Aèèèèèèù-]*'
或addressèu CONTENT=/^[A-Za-z0-9',\-Aèèèèèèè*$/
都将起作用。