正则表达式核心符号速查表

176 阅读3分钟

速查表

以下整理自稀土掘金技术社区高频教程,涵盖正则表达式核心符号及用法:

符号名称功能描述示例匹配结果
.通配符匹配除换行符外的任意单个字符a.cabc, a&c
*星号量词匹配前一个元素 0 次或多次ab*cac, abbc
+加号量词匹配前一个元素 1 次或多次ab+cabc, abbbc
?问号量词匹配前一个元素 0 次或 1 次colou?rcolor, 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|dogcat, dog
( )捕获分组将表达式分组并捕获匹配内容(ab)+ab, abab
\1反向引用引用第 1 个捕获分组的内容(\w+) \1hello hello
^起始锚点匹配字符串的 开始位置^HelloHello(仅匹配行首)
$结束锚点匹配字符串的 结束位置end$end(仅匹配行尾)
\b单词边界匹配单词的开头或结尾位置\bword\bword(独立单词)
\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标准)

高级技巧

  1. 提取中文内容
    [\u4e00-\u9fa5]+ → 从"Hello 世界!2024"提取"世界"

  2. 分割中英混合字符串
    ([\u4e00-\u9fa5]+|[a-zA-Z]+) → 将"掘金Juejin"分割为["掘金", "Juejin"]

  3. 过滤特殊符号
    [^\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_]

稀土掘金学习资源推荐

  1. 《正则表达式 30 分钟入门》
  2. 可视化正则表达式工具 - Regulex
  3. JavaScript 正则最佳实践

💡 提示:不同编程语言(如 Python/JavaScript)的正则实现略有差异,建议查阅对应文档。