元字符
正则表达式让人望而却步以一个重要原因就是转义字符太多了,组合非常多,但是正则表达式的元字符(在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符)并不多。
( [ { \ ^ $ | ) ? * + .
特殊字符
| 字符 | 含义 |
|---|---|
| \t | 水平制表符 |
| \r | 回车符 |
| \n | 换行符 |
| \f | 换页符 |
| \v | 垂直制表符 |
| \0 | 空字符 |
字符类
一般情况下正则表达式一个字符(转义字符算一个)对应字符串一个字符,一般情况下正则表达式一个字符(转义字符算一个)对应字符串一个字符。但是我们可以使用元字符[]来构建一个简单的类, 比如[abcd]代表一个字符,这个字符可以是 abcd四个字符中的任意一个。
表示范围
匹配数字0-9:[0-9].
匹配字母:[a-zA-Z].
取反
元字符[]组合可以创建一个类,我们还可以使用元字符^创建反向类/负向类,反向类的意思是不属于XXX类的内容,表达式[^abc] 表示一个不是字符a或b或c的字符。
预定义类
| 字符 | 等价类 | 含义 |
|---|---|---|
| . | [^\r\n] | 除了回车符和换行符外所有字符 |
| \d | [0-9] | 数字字符 |
| \D | [^0-9] | 非数字字符 |
| \s | [\t\n\x0B\f\r] | 空白符 |
| \S | [^\t\n\x0B\f\r] | 非空白符 |
| \w | [a-zA-Z_0-9] | 单词字符,字母、数字下划线 |
| \W | [^a-zA-Z_0-9] | 非单词字符 |
边界
正则表达式还提供了几个常用的边界匹配字符。
| 字符 | 含义 |
|---|---|
| ^ | 以xxx开头 |
| $ | 以xxx结尾 |
| \b | 单词边界 |
| \B | 非单词边界 |
量词
| 字符 | 含义 |
|---|---|
| ? | 出现零次或一次(最多出现一次) |
| + | 出现一次或多次(至少出现一次) |
| * | 出现零次或多次(任意次) |
| {n} | 出现n次 |
| {n,m} | 出现n到m次 |
| {n,} | 至少出现n次 |
修饰符
- g:global,全文搜索,不添加的话搜索到第一个结果停止搜索
- i:ingore case ,忽略大小写,默认大小写敏感
- m:multiple lines 多行搜索
分组
希望一个字符作为一个整体搜索,加上()。
或
var reg1 = /hello|world/
//等同于
var reg2 = /(hello)|(world)/