【问题标题】:Pattern attribute for Email validation is not working in html5电子邮件验证的模式属性在 html5 中不起作用
【发布时间】:2020-01-31 09:07:44
【问题描述】:

使用 Html5 我有一个包含电子邮件输入字段的视图。

所以为了验证正确的电子邮件地址,我使用模式属性进行验证。

但这不能正常工作,我在这里面临的问题是虽然我输入了无效的电子邮件地址为abc@gmail,但验证不起作用。 我在提琴手中测试了相同的正则表达式模式,它在那里工作正常,但进入我的应用程序它不能正常工作。这个你能帮我吗。 这是我的看法:

<form>

  <input type="email" 
    class="form-control" 
    data-val="true" 
    data-val-required="please enter an email address"
    pattern="[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$" 
    required>
  
  <input type="submit" />
</form>  

【问题讨论】:

  • 我给你做了一个 sn-p - Escape the dot: [a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$ regex101.com/r/CrvvVi/1 - 2,4 也不是一个好的选择。一般来说,您的正则表达式过于严格
  • TLD 不再限于 4 个字符,有很多字符可以出现在您忘记的地址的用户名部分,并且允许使用大写字母。那个正则表达式是糟糕的并且会产生很多误报。

标签: html model-view-controller


【解决方案1】:

正则表达式应该是
[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,}$

而不是
[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,4}$

所以 html 输入将是:

<input type="email"
   class="form-control"
   data-val="true"
   data-val-required="please enter an email address"
   pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$"
   required>

注意:正则表达式的区别是 {2,}{2,4}

【讨论】:

  • 不确定是什么问题,您的正则表达式在提琴手中工作,但在我的代码中它无法正常工作
  • 你能做一个小小提琴或钢笔来测试一下吗?
猜你喜欢
  • 1970-01-01
  • 2013-08-07
  • 2023-04-07
  • 1970-01-01
  • 2013-11-05
  • 2013-11-11
  • 1970-01-01
  • 2017-05-27
  • 2012-08-19
相关资源
最近更新 更多