速查表
以下整理自稀土掘金技术社区高频教程,涵盖正则表达式核心符号及用法:
| 符号 | 名称 | 功能描述 | 示例 | 匹配结果 |
|---|---|---|---|---|
. | 通配符 | 匹配除换行符外的任意单个字符 | 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|dog | cat, dog |
( ) | 捕获分组 | 将表达式分组并捕获匹配内容 | (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)
// 校验中文+英文混合
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)的正则实现略有差异,建议查阅对应文档。