我当前的输入看起来像这样
<input type="email" name="email"
ng-pattern="emailRegex"
ng-change="emailChanged()"
required />
我的ng-pattern =&#34; ctrl.emailRegex&#34;验证电子邮件是否有效
/^[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}$/
到目前为止一直很好,但我想展示
电子邮件无效
到&#34;无效@ !!!!!。com!&#34;
和
info @,admin @,help @,不允许销售@电子邮件
到info@test.com
如何在同一输入中使用2 ng-pattern?
由于
答案 0 :(得分:1)
您只能为输入验证一种模式。并且,即使您可以通过使用指令以某种方式进行操作,它也将是一个太脏的解决方案。 相反,我建议在ng-change
函数内验证正则表达式的输入,并使用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
调用它。