推荐答案
-- -------------------- ---- ------- -------- -------------------- - ----- ---------- - --------------------------------------------------- ------ ----------------------- - -------- ---------------------- - ----- ----------- - -------------------- ------ ------------------------- - -------- ---------------------- - ----- ----------- - ----------------------------------------------------------------------------- -- --------------------------- - ------ ------ - ----- ------ - --- -- --- -- -- -- -- -- -- -- -- -- --- -- -- -- --- ----- ------ - --- -- ---- -- -- -- -- -- -- -- --- --- --- - -- --- ---- - - -- - - --- ---- - --- -- ------------------- - ---------- - --- --- - --- - --- ------ ----------- --- --------------------------------- - -- -- ------------------ ------------- ----------------------------------- -- ---- ------------------ ------------- -------------------------------- -- ----- ------------------- ------------- ------------------------------- -- ---- ------------------- ------------- ------------------------------- -- ----- --------------- ---- ------------- -------------------------------------- -- ---- --------------- ---- ------------- -------------------------------------- -- ---- --------------- ---- ------------- -------------------------------------- -- -----
本题详细解读
邮箱格式验证
邮箱验证的正则表达式通常比较复杂,这里提供一个常用的版本:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
。
^
: 匹配字符串的开始。[a-zA-Z0-9._%+-]+
: 匹配一个或多个字母(不区分大小写)、数字、.
、_
、%
、+
、-
。这部分代表邮箱用户名。@
: 匹配@
符号。[a-zA-Z0-9.-]+
: 匹配一个或多个字母(不区分大小写)、数字、.
、-
。这部分代表域名。\.
: 匹配.
符号(需要转义)。[a-zA-Z]{2,}
: 匹配至少两个字母(不区分大小写)。这部分代表顶级域名,如.com
,.net
,.org
等。$
: 匹配字符串的结尾。
手机号码格式验证
中国大陆手机号码的验证通常使用 ^1[3456789]\d{9}$
这个正则表达式。
^1
: 匹配以数字1
开头。[3456789]
: 匹配第二位数字,通常为3
,4
,5
,6
,7
,8
,9
。\d{9}
: 匹配任意9个数字。$
: 匹配字符串的结尾。
身份证号码格式验证
中国大陆身份证号码由18位数字或字符组成,前17位为数字,最后一位可能是数字或X
。身份证验证比较复杂,不仅需要校验格式,还需要校验校验码。
^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
:^[1-9]\d{5}
: 匹配前6位区域码,第一位不能为0;(18|19|20)\d{2}
:匹配年份,限定为 18xx,19xx,20xx;(0[1-9]|1[0-2])
:匹配月份,01-12;(0[1-9]|[12]\d|3[01])
:匹配日期,01-31;\d{3}
:匹配顺序码,3位数字;[\dXx]$
:匹配最后一位校验码,可以为数字或 X(或 x)。
- 校验码计算:身份证号码前17位乘以相应的加权因子,然后求和,再除以11取模,根据模值在校验码数组中找到对应的校验码。
- 加权因子数组:
[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
- 校验码数组:
[1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
- 注意:此处身份证号码的校验,为简化代码,未校验具体省市区划,以及日期是否有效。在实际应用中,应根据实际情况进行校验。