Angular 我可以有 2 个 ng-pattern 来验证同一个字段吗
Angular can I have 2 ng-pattern to validate the same filed
我当前的输入是这样的
<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@ 电子邮件,所以我将正则表达式更改为
/^(?!(?:info|admin|help|sales)@)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{1,63}$/
到目前为止一切顺利,但我想展示一下
Invalid email
到"invalid@!!!!!.com!"
和
info@, admin@, help@, sales@ emails are not allowed
到info@test.com
如何在同一个输入中有 2 个 ng-pattern?
谢谢
您只能验证一种输入模式。而且,即使您可以通过使用指令以某种方式做到这一点,这种解决方案也太肮脏了。 而不是,我建议在 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
.
中调用它
我当前的输入是这样的
<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@ 电子邮件,所以我将正则表达式更改为
/^(?!(?:info|admin|help|sales)@)[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{1,63}$/
到目前为止一切顺利,但我想展示一下
Invalid email
到"invalid@!!!!!.com!"
和
info@, admin@, help@, sales@ emails are not allowed
到info@test.com
如何在同一个输入中有 2 个 ng-pattern?
谢谢
您只能验证一种输入模式。而且,即使您可以通过使用指令以某种方式做到这一点,这种解决方案也太肮脏了。 而不是,我建议在 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
.