速查表
以下整理自稀土掘金技术社区高频教程,涵盖正则表达式核心符号及用法:
符号 | 名称 | 功能描述 | 示例 | 匹配结果 |
---|---|---|---|---|
. |
通配符 | 匹配除换行符外的任意单个字符 | a.c |
abc , a&c |
* |
星号量词 | 匹配前一个元素 0 次或多次 | ab*c |
ac , abbc |
+ |
加号量词 | 匹配前一个元素 1 次或多次 | ab+c |
abc , abbbc |
? |
问号量词 | 匹配前一个元素 0 次或 1 次 | colou?r |
color , colour |
{n} |
精确量词 | 匹配前一个元素 恰好 n 次 | a{3} |
aaa |
{n,} |
区间量词(最小) | 匹配前一个元素 至少 n 次 | a{2,} |
aa , aaaa |
{n,m} |
区间量词(范围) | 匹配前一个元素 n 到 m 次 | a{2,4} |
aa , aaa |
[ ] |
字符集 | 匹配括号内 任意一个字符 | [aeiou] |
a , e (单词中的元音) |
[^ ] |
否定字符集 | 匹配 不在括号内 的任意字符 | [^0-9] |
a , ! (非数字) |
` | ` | 或运算符 | 匹配 左侧或右侧 的表达式 | `cat |
( ) |
捕获分组 | 将表达式分组并捕获匹配内容 | (ab)+ |
ab , abab |
\1 |
反向引用 | 引用第 1 个捕获分组的内容 | (\w+) \1 |
hello hello |
^ |
起始锚点 | 匹配字符串的 开始位置 | ^Hello |
Hello (仅匹配行首) |
$ |
结束锚点 | 匹配字符串的 结束位置 | end$ |
end (仅匹配行尾) |
\b |
单词边界 | 匹配单词的开头或结尾位置 | \bword\b |
word (独立单词) |
\d |
数字字符 | 匹配任意数字(等价于 [0-9] ) |
\d{3} |
123 , 789 |
\w |
单词字符 | 匹配字母、数字或下划线(等价于 [a-zA-Z0-9_] ) |
\w+ |
hello , user_1 |
\s |
空白符 | 匹配空格、制表符、换行符等 | \s+ |
(空格), \t |
\ |
转义符 | 将特殊符号转为普通字符 | \. |
. (匹配点号) |
高级符号扩展
符号 | 名称 | 功能描述 |
---|---|---|
(?: ) |
非捕获分组 | 分组但不捕获匹配内容 |
(?= ) |
正向先行断言 | 匹配后面紧跟指定模式的位置 |
(?! ) |
负向先行断言 | 匹配后面不跟指定模式的位置 |
(?<= ) |
正向后行断言 | 匹配前面紧跟指定模式的位置(需固定长度) |
(?<! ) |
负向后行断言 | 匹配前面不跟指定模式的位置(需固定长度) |
常用正则表达式实用示例
基础校验
类型 | 正则表达式 | 说明 | 匹配示例 |
---|---|---|---|
纯汉字 | ^[\u4e00-\u9fa5]+$ |
仅包含中文字符 | "中文", "正则表达式" |
纯英文 | ^[a-zA-Z]+$ |
仅包含英文字母(大小写) | "Hello", "REGEX" |
汉字+英文组合 | ^[\u4e00-\u9fa5a-zA-Z]+$ |
中文与英文混合(不含空格/数字/符号) | "中文English", "掘金Juejin" |
进阶校验
类型 | 正则表达式 | 说明 | 匹配示例 |
---|---|---|---|
字母+符号 | ^[a-zA-Z\p{P}]+$ |
英文+标点符号(需启用u 标志) |
"Hello!", "Code@_#" |
字母+符号+数字 | ^[\w\p{P}]+$ |
字母/数字/下划线/标点符号 | "P@ss_123", "a1.b?" |
中英数混合(含空格) | ^[\u4e00-\u9fa5a-zA-Z0-9\s]+$ |
中文/英文/数字/空格 | "掘金 2024 Juejin" |
格式校验
类型 | 正则表达式 | 说明 |
---|---|---|
用户名 | ^[a-zA-Z0-9_\-.]{4,16}$ |
4-16位字母/数字/_-.(常用网站规则) |
强密码 | ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{8,}$ |
至少8位,含大小写字母+数字+特殊字符 |
国内手机号 | ^1[3-9]\d{9}$ |
11位手机号(中国大陆) |
邮箱地址 | ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ |
通用邮箱格式(非严格RFC标准) |
高级技巧
-
提取中文内容
[\u4e00-\u9fa5]+
→ 从"Hello 世界!2024"提取"世界" -
分割中英混合字符串
([\u4e00-\u9fa5]+|[a-zA-Z]+)
→ 将"掘金Juejin"分割为["掘金", "Juejin"] -
过滤特殊符号
[^\u4e00-\u9fa5a-zA-Z0-9\s]
→ 移除除中英数空格外的所有字符
使用示例(JavaScript)
javascript
// 校验中文+英文混合
const regex = /^[\u4e00-\u9fa5a-zA-Z]+$/;
console.log(regex.test("掘金Juejin")); // true
// 提取文本中的中文
const text = "Hello 世界!2024";
const chineseChars = text.match(/[\u4e00-\u9fa5]+/g);
console.log(chineseChars); // ["世界"]
// 强密码校验
const strongPwd = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{8,}$/;
console.log(strongPwd.test("P@ssw0rd")); // true
💡 符号说明
\u4e00-\u9fa5
:匹配所有中文字符(Unicode范围)\p{P}
:匹配所有标点符号(需启用u
标志)(?= )
:正向先行断言(验证但不消耗字符)\W
:匹配非单词字符(等价于[^a-zA-Z0-9_]
)
稀土掘金学习资源推荐
💡 提示:不同编程语言(如 Python/JavaScript)的正则实现略有差异,建议查阅对应文档。