请问下述HTML input的pattern属性正则表达式的含义是什么?
你提到的这段正则是HTML input标签pattern属性常用的邮箱格式校验规则,逐段拆解含义如下:
- 首尾的
^和$:代表规则匹配输入内容的全部起止,也就是说输入的所有字符都要符合中间的校验逻辑,不能有多余的前后缀内容 ^之后的[a-zA-Z0-9.!#$%&'*+/=?^_{|}~-]+`:对应邮箱@符号前的用户名部分:- 方括号内是允许使用的字符范围:大小写英文字母、0-9数字,以及列出的所有特殊符号都属于合法字符
- 末尾的
+代表前面的字符至少要出现1次,也就是用户名不能为空
- 中间的
@:严格匹配邮箱必备的@符号 - @之后的
[a-zA-Z0-9-]+:对应邮箱域名的主体部分(比如xxx@163.com里的163):- 允许使用大小写英文字母、0-9数字和短横线
- 末尾的
+代表这部分至少要有1个字符
- 末尾
$之前的(?:\.[a-zA-Z0-9-]+)*:对应域名的后缀部分(比如.com、.edu.cn这类):(?:)是正则的非捕获分组语法,作用是把内部的规则打包成一个整体,仅用于校验不会额外提取匹配结果,适合表单校验场景- 内部的
\.代表匹配普通英文点号(加斜杠是因为点在正则里是特殊字符,需要转义才能匹配字面意义的点) - 点号后接的
[a-zA-Z0-9-]+规则和域名主体部分一致 - 末尾的
*代表前面的整个分组可以出现0次或多次,既支持普通单后缀域名(比如xxx@example.com),也支持多级后缀域名(比如xxx@mail.example.org.cn)
这个规则是W3C推荐的通用邮箱格式校验规则,能覆盖绝大多数合法邮箱的格式校验需求,日常开发的表单场景基本都可以直接使用。
内容的提问来源于stack exchange,提问作者Glenn
相关产品推荐
相关产品推荐

