电子邮件正则表达式不会验证句点后的部分



我正在尝试使用角度指令验证html页面中的电子邮件地址。

对我来说,有效的电子邮件地址是

hello@mycompany.com

以下

正则表达式允许以下电子邮件地址

hello@mycompany

我可以使用什么样的正则表达式来强制执行电子邮件地址的".com"部分,意思是强制执行"."和"."之后的任何内容。

我研究了互联网并使用了不同列出的正则表达式,但没有一个有效

<div class="form-group" ng-class="{ 'has-error': registerUpdateForm.Email.$invalid }">
    <label class="col-sm-3 control-label" for="Email">Email Address</label>
    <div class="col-sm-9">
        <input required type="email" data-ng-model="auth.Email"
               data-ng-pattern="^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$"
               id="email" name="Email" class="form-control" />  <!--ng-pattern="matchPattern"/>-->
    </div>
</div>

期望值是Regexp或内联模式,在 javascript 中看起来像 /pattern/ 。正则表达式本身看起来不错,所以只需尝试在开头和结尾添加正斜杠:

<input required type="email" data-ng-model="auth.Email"
               data-ng-pattern="/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$/"
               id="email" name="Email" class="form-control" /> 

普伦克演示

<input type="email">的 W3C 规范规定电子邮件地址必须与正则表达式匹配

/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$/

所以这将是类似(未经测试)的合理开始

/^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+.com$/

请注意,如果您想要允许的不仅仅是".com":建议的域,则不能再将顶级域限制为 {2,4} 个字符。

最新更新