Angular我可以有2个ng模式来验证同一归档



我的当前输入看起来像

<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调用。

最新更新