了解 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

匹配:helloHelloHELLOhElLo 等。

实际应用示例

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 – 修改行为

只要记住这些规则,正则表达式就容易使用了。

正则表达式可以做什么

  • 清理字符串
  • 验证用户输入
  • 提取数据
  • 高效执行替换

正则 = 模式 + 重复 + 标志
掌握这个公式,正则将永远变得简单。 🚀

Back to Blog

相关文章

阅读更多 »