我的当前输入看起来像
<input type="email" name="email"
ng-pattern="emailRegex"
ng-change="emailChanged()"
required />
我的ng-pattern =" ctrl.emailregex"验证电子邮件是否有效
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{1,63}$/;
,但我想阻止info@,admin@,help@,sales@emails,所以我将正则罚款更改为
/^(?!(?:info|admin|help|sales)@)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{1,63}$/
到目前为止很好,但是我想展示
无效的电子邮件
"无效@!!!!!。com!"
和
info@,admin@,help@,sales@emails不允许
to info@test.com
在同一输入中如何有2 ng模式?
谢谢
您只能验证一个模式的输入。而且,即使您可以通过使用指令以某种方式进行操作,也太脏了。而不是,我建议在ng-change
内部对REGEX(ES(的输入验证,并使用formName.inputName.$setValidity
设置输入的自定义有效性。如果通过一个模式,则可以让您有后备。
所以,例如, ctrl.emailChanged
可能有类似的东西,
ctrl.emailChanged = function() {
var emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{1,63}$/;
var customValidateEmail = /^(?!(?:info|admin|help|sales)@)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{1,63}$/;
if(!emailPattern.test(ctrl.registrationForm.email)) {
// Invalid email
} else if (customValidateEmail.test(ctrl.registrationForm.email)) {
// handle accordingly
}
// rest of the things
...
}
另外,您可以将验证逻辑移至另一个功能,然后从emailChanged
调用。