正则表达式直接量被定义为包含在一对2斜杠(/)之间的字符.
1.直接量字符
字母数字,常见转移字符\n等.
2.字符类
将单独的直接量字符放进方括号内就可以组成字符类.一个字符类和它所包含的任意字符都匹配.
字符 匹配
[...] 位于括号内的任意字符
[^...] 不在括号之中的任意字符
. 除换行符和其他unicode行终止符之外的任意字符
\w 任何ASCII单字字符,等价于[a-zA-Z0-9_]
\W 任何非ASCII单字字符,等价于[^a-zA-Z0-9_]
\s 任何unicode空白符
\S 任何非unicode空白符的字符.
\d 任何ASCII数字,等价于[0-9]
\D 任何非ASCII数字,等价于[^0-9]
[\b] 退格直接量(特例)
3.重复
正则表达式的重复字符
字符 含义
{n,m} 匹配前一项至少n次,但是不超过m次
{n,} 匹配前一项n次,或更多次
{n} 匹配前一项恰好n次
? 匹配前一项0次或1次,也就是说前一项可选.等价于{0,1}
+ 匹配前一项1次或多次.等价于{1,}
* 匹配前一项0次或多次.等价于{0,}
4.选择,分组和引用
字符"|"用于分隔供选择的字符. /\d{3}|[a-z]{4}/匹配的是三位数字或四个小写字母.
正则表达式的选择,分组和引用字符
字符 含义
| 选择.
(...) 组合.
(?:...) 只组合.不记忆与该组匹配的字符.
\n 和第n个分组第一次匹配的字符相匹配.组是括号中的字表达式.组号是从左到右计数的左括号数.
5.指定匹配的位置
正则表达式的锚字符
字符 含义
^ 匹配字符串的开头,在多行检索中,匹配一行的开头
$ 匹配字符串的结尾,在多行检索中,匹配一行的结尾
\b 匹配一个词语的边界.
\B 匹配非词语边界的位置.
(?=p) 正前向声明,要求接下来的字符都与模式p匹配,但是不包括匹配模式中的那些字符.
(?!p) 反前向声明,要求接下来的字符不与模式p匹配.
6.标志
正则表达式的标志,说明高级模式匹配的规则.和其他的正则表达式语法不同,标志是在"/"符号之外说明的,即它们不出现在两个斜杠之间,而是位于第二个斜杠之后.
正则表达式的标志
字符 含义
i 执行不分大小写的匹配
g 执行一个全局的匹配.简而言之,即找到所有匹配,不是在找到第一个之后就停止
m 多行模式,^匹配一行的开头和字符串的开头,$匹配一行的结尾或字符串的结尾