正则表达式
一、修饰符
i:将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。
g:查找所有的匹配项。
m:使边界字符 ^ 和 $ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。
二、元字符
定位符
- ^:匹配输入字符串开始的位置;
- $:匹配输入字符串结尾的位置;
- \b:匹配一个单词边界,即字与空格间的位置。;
限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共 6 种。
*:匹配前面的子表达式零次或多次。例如,zo_ 能匹配 "z" 以及 "zoo"。* 等价于{0,};
+:匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,};
?:匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等价于 {0,1};
{n}:n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o;
{n,}:n 是一个非负整数。至少匹配 n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*';
{n,m}:m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。;
- 和 + 限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个 ? 就可以实现非贪婪或最小匹配。
选择
用圆括号 () 将所有选择项括起来,相邻的选择项之间用 | 分隔。
- x|y: 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"
集合和范围
字符集合,用[]表示,匹配所包含的任意一个字符,用 [-]表示范围,用[^]表示不属于此集合
预定义类
- \d:匹配一个数字字符。等价于 [0-9]。
- \D:匹配一个非数字字符。等价于 [^0-9]。
- \w:匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
- \W:匹配非字母、数字、下划线。等价于'[^a-za-z0-9_]'。
- \f:匹配一个换页符。等价于 \x0c 和 \cL。
- \n:匹配一个换行符。等价于 \x0a 和 \cJ。
三、运算符优先级
\(转义符)>圆括号和方括号((), (?:), (?=), [])>定位点和序列(^, $, \任何元字符、任何字符)>替换,"或"操作(|)
四、常用正则
数字类
- 数字:/^\d$/ 或者 /^[0-9]$/
- n 位的数字:/^(\d){n}$/ 或者 /^[0-9]{n}$/
- 至少 n 位的数字:/^(\d){n,}$/ 或者 /^[0-9]{n,}$/
- m-n 位的数字:/^(\d){m,n}$/ 或者 /^[0-9]{m,n}$/
- 零和非零开头的数字:^(0|[1-9][0-9]\*)$
校验字符
- 汉字:/^[\u4e00-\u9fa5]{0,}$/
- 英文和数字:/^[A-Za-z0-9]+$/
- 长度为3-20的所有字符:/^(\w){3,20}$/或者/^.{3,20}$/
- 由 26 个英文字母组成的字符串:/^[A-Za-z]+$/
- 由数字和 26 个英文字母组成的字符串:/^[A-Za-z0-9]+$/
- 由数字、26 个英文字母或者下划线组成的字符串:/^w+$/
- 中文、英文、数字包括下划线:/^[\u4e00-\u9fa5A-Za-z0-9_]+$/
- 中文、英文、数字但不包括下划线等符号:/^[\u4e00-\u9fa5A-Za-z0-9]+$/
特殊需求表达式
- Email 地址:/^\w+@\w+\.([a-z])+$/
- 域名:/[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?/
- 手机号码:/^1[2-9][0-9]{9}$/
- 身份证号(15 位、18 位数字),最后一位是校验位,可能为数字或字符 X:(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)
- 帐号是否合法(字母开头,允许 5-16 字节,允许字母数字下划线):/^[A-Za-z]\w{4,15}/
- 密码(以字母开头,长度在 6~18 之间,只能包含字母、数字和下划线):/^[A-Za-z]\w{4,15}/
- 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间):
- 强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在 8-10 之间):
- 日期格式:
- 一年的 12 个月(01 ~ 09 和 1 ~ 12):
- 中文字符的正则表达式: