我有以下使用ng-pattern指令的电子邮件验证代码。我需要在错误验证中包含单引号,以便例如:asd'[email protected]失败。我不想使用默认的angular指令,因为后续的..(点),^,逗号等不适合
<input type="email" name="username" placeholder="[email protected]" ng-model="user.username" ng-maxlength="100" ng-model-options="{ updateOn: blur }" ng-pattern='/^(([^<>()\[\]\\.\,;:\s@"]+(\.[^<>()\[\]\\.,;^:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/' required />
<div class="error-container" ng-show="userForm.username.$dirty && userForm.username.$error">
<small class="error" ng-show="userForm.username.$error.required">
Your email is required.
</small>
<small class="error" ng-show="userForm.username.$error.pattern">
Please input a valid email.
</small>
<small class="error" ng-show="userForm.username.$error.maxlength">
Your email cannot be longer than 100 characters
</small>
从上面可以看出,我正在使用以下正则表达式: ng-pattern='/^(([^<>()\[\]\\.\,;:\s@"]+(\.[^<>()\[\]\\.,;^:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/'
我的问题是我如何包括单引号('),以便它与ng-pattern标签引号以及正则表达式中的(^)不冲突。我四处搜寻,看来我应该使用‘但不确定如何实现。感谢任何帮助。
您可以使用以下简短版本:
ng-pattern="/^(([^<>()\[\]\\.,;:\s@^\x22\x27]+(\.[^<>()\[\]\\.,;^:\s@\x22\x27]+)*)|(\x22[^@]+\x22))@((\[[0-9]{1,3}(\.[0-9]{1,3}){3}])|(([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}))$/"
这是正则表达式演示
更改为:
\.[0-9]{1,3}
收缩,因为它是重复3次,(\.[0-9]{1,3}){3}
\x27
('
)和\x22
("
)符号^
到第一个否定字符类中\x22.+\x22
为\x22[^@]+\x22
避免我们溢出域部分而停留在用户名部分内。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句