regex
约 460 字大约 2 分钟
2025-05-21
元字符
元字符 | 含义 | 示例 |
---|---|---|
\d | 数字 [0-9] | \d{3} 匹配三位数字 |
\D | 非数字 | \D+ 匹配连续非数字字符 |
\w | 单词字符 [a-zA-Z0-9_] | \w+ 匹配整数变量名 |
\W | 非单词字符 | \W+ 匹配标点符号序列 |
\s | 空白字符(空格、换行等) | \s+ 匹配连续空白 |
\S | 非空白字符 | \S+ 匹配非空白内容 |
. | 除换行符外任意字符 | a.c 匹配 "abc"、"a@c" |
\ | 转义符 | \. 匹配实际点号 |
量词(重复次数)
量词 | 含义 | 等价写法 |
---|---|---|
* | 0次或多次 | {0,} |
+ | 1次或多次 | {1,} |
? | 0次或1次 | {0,1} |
{n} | 恰好n次 | |
{n,} | 至少n次 | |
{n,m} | n到m次(含) |
边界锚点
类型 | 写法 | 含义 |
---|---|---|
字符串开头 | ^ | 多行模式匹配行首 |
字符串结尾 | $ | 多行模式匹配行尾 |
单词边界 | \b | \w与\W的交界处 |
非单词边界 | \B | 非单词边界 |
断言
类型 | 写法 | 含义 |
---|---|---|
正向先行 | a(?=b) | 匹配后面是b的a |
负向先行 | a(?!b) | 匹配后面不是b的a |
正向后行 | (?<=a)b | 匹配前面是a的b |
负向后行 | (?<!a)b | 匹配前面不是a的b |
分组与捕获
类型 | 写法 | 含义 |
---|---|---|
捕获组 | (\d{3}) | 可通过索引访问分组内容 |
非捕获组 | (?:abc) | 仅分组不捕获 |
命名捕获组 | (?<year>\d{4}) | 通过名称访问分组 |
常用模式速查
场景 | 正则表达式 |
---|---|
手机号码 | ^1[3-9]\d{9}$ |
身份证号 | ^\d{17}[\dXx]$ |
URL | ^https?:\/\/.*$ |
HTML标签 | <([a-z]+)(?:\s+[^>]*)?> |
日期(YYYY-MM-DD) | ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ |
IPV4地址 | ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$ |
URL地址 | ^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$ |
中文汉字 | ^[\u4e00-\u9fa5]+$ |