正则速记

4 阅读2分钟

🔤 一、基础符号口诀(10字内)

符号口诀示例说明
.点代一切匹配任意字符(换行除外)
\d\d 数字等价 [0-9]
\w\w 单词字母数字下划线 [a-zA-Z0-9_]
\s\s 空白空格、制表符、换行等
\D \W \S大写取反\D → 非数字
^开头锚定^Hello → 必须以 Hello 开头
$结尾锚定world$ → 必须以 world 结尾
*零或多\d* → 0 个或多个数字
+至少一个\d+ → 至少一个数字
?有无皆可colou?r → 匹配 color 或 colour
{n}刚好 n 个\d{3} → 刚好 3 位数字
{n,}至少 n 个\d{6,} → 6 位以上
{n,m}n 到 m 个\d{6,8} → 6~8 位

📌 口诀总结

“点代一切,\d 数字,\w 字符,\s 空格”
“^ 开头,$ 结尾,+ 至少一个”


📦 二、常用场景速查表

需求正则表达式说明
手机号(简单)/^1[3-9]\d{9}$/以1开头,第二位3-9,共11位
邮箱(基础)/^\S+@\S+.\S+$/非空@非空.非空
数字/^\d+$/全是数字
整数(含负)/^-?\d+$/-? 表示可能有负号
小数/^-?\d+(.\d+)?$/(.\d+)? 表示小数部分可选
密码(字母数字)/^[a-zA-Z0-9]{6,}$/至少6位字母数字
中文/^[\u4e00-\u9fa5]+$/匹配纯中文
网址(http/https)/^https?://.+/s? 表示 s 可有可无

📌 提示:这些是基础版,实际项目可用库如 validator.js


🔧 三、JS 中使用正则的方法

方法口诀示例
str.match(reg)匹配用 match"abc".match(/\d+/) → 结果数组或 null
str.replace(reg, new)替换用 replace"a1b2".replace(/\d/g, "X")"aXbX"
str.split(reg)分割用 split"a1b2c".split(/\d/)["a","b","c"]
reg.test(str)判断用 test/\d/.test("abc")false
reg.exec(str)提取用 exec返回详细匹配信息(少用)

最常用组合

// 判断是否为手机号
/^1[3-9]\d{9}$/.test(phone)

// 替换所有数字为 *
"abc123def".replace(/\d/g, "*") // "abc***def"

// 提取所有数字
"价格:100元,数量:2件".match(/\d+/g) // ["100", "2"]

⚠️ 四、高频避坑指南

错误正确做法说明
忘记 ^$加锚点否则 "x123x" 也能通过 /\d+/
忘记转义特殊字符\如点 . 写成 \.,反斜杠 \ 写成 \\
忘记全局标志 gg否则只匹配第一个
在字符串中写错/.../ 不用 ""\d+" 是字符串,✅ /\d+/ 是正则对象
中文匹配不准用 Unicode 范围[\u4e00-\u9fa5]

🎯 五、终极六句口诀(必背)

每天念一遍,正则变直觉!

  1. 点代一切,\d 数字
  2. ^ 开头,$ 结尾
  3. + 至少一个, ***** 零或多
  4. 小写是它,大写不是它\d vs \D
  5. 全局匹配加 g,不然只找一
  6. test 判断,match 提取