此电子邮件验证程序表达式有什么问题?

时间:2018-08-26 21:00:24

标签: regex validation

网站上的联系表拒绝了我使用多年的电子邮件地址。我以为是因为我的TLD是.Email,所以我将真实地址放在正文中,并将Wrong.Address@Nowhere.com放在字段中。仍然声称无效。使其全部变为小写。仍然声称无效。删除期间。仍然拒绝。检查了他们的源代码,但在我看来,它应该已经接受了我尝试过的所有内容,除了第一个(TLD中有五个字符)。

<input id='Textbox-2'
       data-sf-role="text-field-input"
       type="email"
       name="TextFieldController_0"
       placeholder="Email"
       value=""
       pattern=\A[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}\z
       class="form-control" />

(我添加了换行符,以节省很多水平滚动操作)。模式为何失败?难道不是用引号引起来吗?

1 个答案:

答案 0 :(得分:0)

\A\z是使用^$的JS正则表达式不支持的锚点(分别是字符串的开头和字符串的结尾)。但是,HTML5 pattern正则表达式由HTML5引擎处理,该引擎使用^(?:)$包装模式,因此默认情况下会锚定模式。

您应确保从模式中删除了\A\z

pattern="[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}"