1、邮箱
/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/
该正则表达式的详细解释如下:
^:以句首开始匹配
[\w-]+:匹配一个或多个字母、数字、下划线或连字符(邮箱用户名部分)
(\.[\w-]+)*:匹配零个或多个点后跟着一个或多个字母、数字、下划线或连字符(邮箱用户名中的域名部分)
@:匹配一个 "at" 符号
([\w-]+\.)+:匹配一个或多个字母、数字、下划线或连字符后跟着一个点(邮箱域名的一级和二级域名部分)
[a-zA-Z]{2,7}:匹配两到七个连续的大小写字母(邮箱域名的顶级域名部分)
$:以句尾结束匹配
* 需要注意的是,虽然该正则表达式可以用来验证大多数常见的邮箱地址,但并不能保证完全准确地验证所有可能的邮箱地址形式,并且还有一些特殊的国际化邮箱地址需要额外处理。
2、身份证号码,支持1/2代(15位/18位数字)
/^\d{6}((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3})|((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2}))(\d|X|x)$/
该正则表达式详细解释如下:
^\d{6}:匹配前6个数字,表示身份证号码的地区编码。
((((((19|20)\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|(((19|20)\d{2})(0[13578]|1[02])31)|((19|20)\d{2})02(0[1-9]|1\d|2[0-8])|((((19|20)([13579][26]|[2468][048]|0[48]))|(2000))0229))\d{3}):匹配身份证号码中日期部分(出生年月日),包括闰年的处理。
|:逻辑或运算符,表示下面两个子表达式二选一。
((((\d{2})(0[13-9]|1[012])(0[1-9]|[12]\d|30))|((\d{2})(0[13578]|1[02])31)|((\d{2})02(0[1-9]|1\d|2[0-8]))|(([13579][26]|[2468][048]|0[048])0229))\d{2})):匹配身份证号码中日期部分的另外一种写法。
(\d|X|x)$:匹配身份证号码中最后一个数字或字母(X/x),表示身份证号码的校验位。
* 需要注意的是,虽然该正则表达式可以匹配满足规定格式的身份证号码,但不能完全保证身份证号码的有效性和正确性。
3、手机号码
/** 手机号(mobile phone)中国(严谨) */
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/
该正则表达式详细解释如下:
^(?:(?:\+|00)86)?:匹配中国大陆电话号码前可能的国际区号,如+86或0086。
1:匹配中国大陆手机号码的第一位数字必须为1。
(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189])):匹配手机号码的第二位数字,可以是3、45、5、6、7、8、9之中的任意一个数字。
\d{8}:匹配手机号码后8位数字。
* 需要注意的是,尽管该正则表达式可以匹配符合规定格式的中国大陆手机号码,但并不能完全保证手机号码的有效性和正确性。
/** 手机号(mobile phone)中国(宽松) */
/^(?:(?:\+|00)86)?1[3-9]\d{9}$/
该正则表达式详细解释如下:
^(?:(?:\+|00)86)?:匹配中国大陆电话号码前可能的国际区号,如+86或0086。
1:匹配中国大陆手机号码的第一位数字必须为1。
[3-9]:匹配手机号码的第二位数字,可以是3到9之间的任意一个数字。
\d{9}:匹配手机号码后9位数字。
* 需要注意的是,虽然该正则表达式可以匹配符合规定格式的中国大陆手机号码,但并不能完全保证手机号码的有效性和正确性。
4、密码强度
/** 最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 */
/^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/
该正则详细解释如下:
^\S*:匹配字符串开始位置,可以包含任意数量的非空格字符。
(?=\S{6,}):正向预查(lookahead),要求字符串中必须包含至少6个非空格字符。
(?=\S*\d):正向预查,要求字符串中必须包含至少一个数字。
(?=\S*[A-Z]):正向预查,要求字符串中必须包含至少一个大写字母。
(?=\S*[a-z]):正向预查,要求字符串中必须包含至少一个小写字母。
(?=\S*[!@#$%^&*? ]):正向预查,要求字符串中必须包含至少一个特殊字符(!@#$%^&*? )。
\S*$:匹配字符串结束位置,可以包含任意数量的非空格字符。
* 需要注意的是,尽管该正则表达式可以匹配符合规定复杂度的密码,但并不能完全保证密码的强度和安全性