了解 Regex:最简指南
发布: (2025年12月2日 GMT+8 14:59)
4 min read
原文: Dev.to
Source: Dev.to
什么是正则表达式?
- 用于 查找、替换、验证 或 提取 字符串中特定模式的模式匹配工具。
- 常见用途:查找数字、验证电子邮件、过滤字母、去除特殊字符、提取日期、电话号码、身份证号等。
JavaScript 中的正则语法
在 JavaScript 中,正则表达式写在斜杠之间:
/pattern/flags
示例
/[0-9]+/g
细分
| 部分 | 含义 |
|---|---|
/ | 正则开始 |
[0-9]+ | 模式(一个或多个数字) |
/ | 正则结束 |
g | 标志 – 全局(查找所有匹配) |
字符集
正则表达式最重要的部分是 字符集([ ])。方括号内的任意字符都会匹配 其中的任意一个。
| 模式 | 含义 |
|---|---|
[0-9] | 任意数字 |
[a-z] | 小写字母 a‑z |
[A-Z] | 大写字母 A‑Z |
[a-zA-Z] | 任意字母字符 |
[0-9-] | 数字或连字符 |
技巧: 掌握这五种模式大约能覆盖你需要了解的 60 %。
量词
量词决定模式应 重复多少次。
| 符号 | 含义 | 示例 | 说明 |
|---|---|---|---|
+ | 1 次或更多 | [0-9]+ | 一个或多个数字 |
* | 0 次或更多 | a* | “a” 可能出现也可能不出现 |
? | 0 次或 1 次 | colou?r | 匹配 “color” 或 “colour” |
锚点
锚点指定匹配在字符串中的 位置。
| 锚点 | 含义 |
|---|---|
^ | 字符串以…开头 |
$ | 字符串以…结尾 |
示例
/^[0-9]+/
→ 字符串必须以数字开头。
标志
标志写在闭合斜杠之后,用来修改正则的行为。
| 标志 | 名称 | 用途 |
|---|---|---|
g | 全局 | 查找 所有 匹配 |
i | 忽略大小写 | 大小写不敏感匹配 |
m | 多行 | 对每一行生效 |
s | 点任意匹配 | . 也匹配换行符 |
示例
/hello/gi
匹配:hello、Hello、HELLO、hElLo 等。
实际应用示例
1. 删除数字
"50-200 metric tonnes".replace(/[0-9]/g, "");
// Output: "-metric tonnes"
2. 提取数字(包括连字符)
"50-200 metric tonnes".match(/[0-9-]+/)[0];
// Output: "50-200"
3. 验证电子邮件
/^[\w.-]+@[\w.-]+\.\w{2,}$/i.test("user@example.com");
// Returns: true
4. 只保留字母、数字和空格
text.replace(/[^a-zA-Z0-9 ]/g, "");
// 移除所有其他字符
5. 手动过滤(不使用正则)
let result = "";
for (let ch of str) {
if (!"0123456789".includes(ch)) {
result += ch;
}
}
总结 – 关键规则
- 字符集
[ ]– 匹配什么 - 量词
+ * ?– 匹配多少次 - 锚点
^ $– 字符串的开始/结束 - 标志
g i m s– 修改行为
只要记住这些规则,正则表达式就容易使用了。
正则表达式可以做什么
- 清理字符串
- 验证用户输入
- 提取数据
- 高效执行替换
正则 = 模式 + 重复 + 标志
掌握这个公式,正则将永远变得简单。 🚀