HTML5 使用“pattern”属性的表单验证

HTML5 Form Validation With the “pattern” Attribute

我正在尝试为 HTML5 表单想出一个有效的模式。我想允许 *@student.*.edu.vn

这是我的代码:

 <input 
       type="text" 
       name="mail"  
       pattern="([a-z]|[0-9])+(@{1})+(student)+(.)+[a-z]+(.edu.vn)"
   />

它没有像我想要的那样工作。我做错了什么?

感谢任何帮助。

模式(正则表达式)有点错误,因为您没有转义所有特殊字符,例如 . 并且其中有一些不必要的部分。尝试使用以下稍微修改过的模式:

([a-z]|[0-9])+@student\.[a-z]+\.edu\.vn

<form>
  <input type="text" name="mail" pattern="([a-z]|[0-9])+@student\.[a-z]+\.edu\.vn" />
  <input type="submit">
</form>

注意: 确保您也在服务器端进行验证,因为任何在表单中输入值的人都可以删除 pattern 以绕过此检查。

我想出了这个解决方案,它更容易阅读并且不那么严格(这是一件好事,因为电子邮件地址可以包含比小写字母数字字符更多的字符。不要忘记使用电子邮件验证器在后端进行适当的验证。

<form>
  <input 
   type="text" 
   name="mail"  
   pattern=".+@student\..+\.edu.vn"
 />
 <input type="submit">
</form>