正则表达式详解与实战指南:从入门到常见案例

正则表达式详解与实战指南:从入门到常见案例

原文 -> 正则表达式详解与实战指南:从入门到常见案例

正则表达式(Regular Expression ,简称 RegExp )是编程中一项非常实用的技能。

它就像一把"字符串搜索利器",能够帮助我们快速匹配、查找、验证或替换文本。

无论是验证邮箱、手机号,还是提取网页中的信息,正则表达式都能大显身手。

这篇文章将带你从基础符号到常见实战一步步掌握它。


一、什么是正则表达式?

正则表达式是一种用特定规则描述字符串模式的语法。

举个例子:

如果我们想找出一段文字中所有的电话号码,可以用一条规则去描述"电话号码的格式",这条规则就是正则表达式。

例如:

js 复制代码
/\d{11}/

这条规则表示------匹配连续的 11 个数字


二、正则表达式的基本语法符号

下面是最常用的正则符号,理解它们,你就掌握了核心。

符号 含义 示例 匹配示例
. 匹配除换行符外的任意字符 /a.b/ "acb"、"a_b"
\d 数字,等价于 [0-9] /\d\d/ "12"、"45"
\w 字母、数字、下划线 /\w+/ "abc123"
\s 空白字符(空格、换行等) /\s+/ " "、"\n"
^ 匹配字符串开头 /^a/ "apple" ✅,"banana" ❌
$ 匹配字符串结尾 /a$/ "banana" ✅,"apple" ❌
[] 字符集,匹配方括号内任一字符 /[abc]/ 匹配 "a"、"b" 或 "c"
[^ ] 否定字符集,匹配除括号内字符外的任意字符 /[^0-9]/ 匹配任何非数字
* 重复 0 次或多次 /go*/ "g"、"go"、"gooo"
+ 重复 1 次或多次 /go+/ "go"、"goo"
? 可有可无(0 或 1 次) /colou?r/ "color"、"colour"
{n} 重复 n 次 /\d{4}/ "2025"
{n,} 至少重复 n 次 /a{2,}/ "aa"、"aaaa"
{n,m} 重复 n 到 m 次之间 /\d{2,4}/ "12"、"1234"
() 分组,用于提取或重复匹配 /(ab)+/ "ab"、"abab"
` ` 或,匹配多个规则之一 `/cat
\ 转义字符 /\./ 匹配一个点 . "."

三、在 JavaScript 中如何使用正则

在 JavaScript 里,正则通常有两种用法:

直接字面量创建:

js 复制代码
let reg = /^[A-Z]\d{3}$/;
console.log(reg.test("A123")); // true

使用构造函数:

js 复制代码
let reg = new RegExp("^[A-Z]\\d{3}$");

常用方法:

方法 说明
.test(str) 判断字符串是否匹配,返回 true / false
.match(reg) 从字符串中提取匹配内容
.replace(reg, newStr) 替换匹配内容
.split(reg) 按正则规则分割字符串

四、实战示例:日常最常见的几类正则

1. 验证邮箱

js 复制代码
const emailReg = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
console.log(emailReg.test("user@example.com")); // true

解释:

  • [^\s@]+:匹配一个或多个非空格、非 @ 的字符
  • @:必须包含 @
  • \.:点号
  • [^\s@]+:顶级域名部分(如 com、cn)

2. 验证中国大陆手机号

js 复制代码
const phoneReg = /^1[3-9]\d{9}$/;
console.log(phoneReg.test("13812345678")); // true

解释:

  • 1 开头
  • 第二位是 3~9
  • 后面跟 9 位数字

3. 匹配身份证号(简化版)

js 复制代码
const idReg = /^\d{15}|\d{18}$/;
console.log(idReg.test("440102199912123456")); // true

4. 验证是否为纯字母

js 复制代码
const letterReg = /^[A-Za-z]+$/;

5. 提取网页中的所有链接

js 复制代码
const html = '<a href="https://example.com">Example</a>';
const linkReg = /href="(.*?)"/g;
console.log(html.match(linkReg)); // ['href="https://example.com"']

6. 去掉多余空格

js 复制代码
let text = "   Hello   world   ";
console.log(text.replace(/\s+/g, " ").trim()); // "Hello world"

五、正则表达式的小技巧

  1. 测试工具推荐:
  2. 逐步构建复杂规则
    不要一次性写一长串正则,先写小的片段,逐步测试。
  3. 加上注释
    在复杂正则中使用 x 模式(某些语言支持)或多行字符串加注释,方便理解。

六、结语

正则表达式初看"天书",但掌握核心符号后,它其实非常实用。
一句话总结:

正则表达式不是魔法,而是"用规则描述字符串"的语言。

无论你是前端、后端,还是数据工程师,掌握正则都能让你的代码更高效、更优雅。

相关推荐
2501_9364156910 小时前
API-正则表达式&时间&包装类
正则表达式
鹤卿1233 天前
谓词与正则表达式(OC)
ios·正则表达式·objective-c·xcode
饼干哥哥7 天前
10.5% 深层转化、90%+ 新用户,ChatGPT Ads 值得吗?
算法·正则表达式·编程语言
饼干哥哥8 天前
Seedance TK视频「真人感」问题的 9 个解法
正则表达式·代码规范·设计
逝水无殇9 天前
C# 正则表达式详解
开发语言·后端·正则表达式·c#
木木子2213 天前
# 密码强度检测深度解析:正则表达式实时分析、多维度评分算法与可视化反馈
mysql·算法·华为·正则表达式·harmonyos
饼干哥哥13 天前
用Claude Code跑通跨境电商的5大场景,顶10个人的团队
人工智能·设计模式·正则表达式
饼干哥哥14 天前
单篇100万阅读文章,如何用AI 做好内容创作?
人工智能·正则表达式·代码规范
无足鸟ICT16 天前
【RHCA+】扩展正则表达式
linux·正则表达式
无足鸟ICT18 天前
【RHCA+】正则表达式
linux·正则表达式