简单的了解一下概念:
1、元字符
字符 | 含义 |
---|---|
\b | 单词的开头或者结尾,分界处 |
. | 匹配除了换行符以外的任意字符 |
* | 前面的内容连续重复使用任意次,已使整个表达式得到匹配 |
\d | 数字 \d{n} 表示数字必须连续匹配n次 |
\s | 匹配任意的空格符、包括空格,制表符(Tab),换行符,中文全角空格 |
\w | 匹配字母,数字,下划线,汉字 |
^ | 字符串的开头 |
$ | 字符传的结束 |
2、字符转义
字符 | 含义 |
---|---|
\ | 转义字符 |
3、重复
字符 | 含义 |
---|---|
* | 零到正无穷 |
+ | 1到正无穷 |
? | 0到1次 |
{n} | 重复n次 |
{n,} | 重复n到正无穷 |
{n, m} | 重复n到m次 |
4、字符类
字符 | 含义 | 例子 |
---|---|---|
[] | 匹配任一个字符的集合 | [0-9]匹配0到9任意一个 /\(?0\d{2}[)-]?\d{8}/g 匹配座机号码 |
5、分支条件
字符 | 含义 |
---|---|
| | 分组匹配,若满足某个条件,则不会继续向下匹配下去 |
6、分组条件
字符 | 含义 | eg:匹配ip字段(3组255以下数字+.) |
---|---|---|
() | 分组条件 | ((25[0-5]|2[0-4]\d|[01]?\d{0,2})\.){3}(25[0-5]|2[0-4]\d|[01]?\d{0,2}) |
7、反义字符
字符 | 含义 |
---|---|
\W | 匹配任意不是字母、数字、下划线、汉字的字符 |
\S | 匹配任意非空白符的字符 |
\B | 匹配任意不是单词开头或者结尾的字符 |
\D | 匹配任意不是数据的字符 |
[^a] | 匹配任意除了a以外的字符 |
[^aeiou] | 匹配任意除了aeiou以外的字符 |
\S+ 匹配非空白开头的非字符串
8、后向引用
重复搜索前面某个分组匹配的文本
分类 | 语法 | 说明 |
---|---|---|
捕获 | (exp) | 匹配exp,捕获文本到自动命名的组里 |
| (?<name>exp) | 匹配exp,捕获文本到命名为name的组里 |
| (?:exp) | 匹配exp,不捕获匹配的文本,也不给此分组分配组号 |
零宽断言 | (?=exp) | 匹配exp前面的分组 |
| (?<=exp) | 匹配exp后面的分组 |
| (?!exp) | 匹配后面跟的不是exp的分组 |
| (?<!exp) | 匹配前面跟的不是exp的分组 |
任务:
1、用正则实现queryToJson