正则表达式教程零基础入门:语法详解+实战案例,新手7天掌握常用表达式

admin 综合编程开发技术 2


是不是一听到 “正则表达式” 就头大?看着那些乱七八糟的符号 “^$.*+?()[]”,就像看天书一样;想验证个手机号、邮箱,搜来的表达式复制过去能用,自己改一个就出错;提取文本里的关键信息,试了半天要么漏匹配,要么匹配太多?别着急,今天兔子哥就带零基础的朋友入门正则表达式,7 天时间从语法到实战,手把手教你掌握常用表达式,以后验证、提取文本再也不用求人,一起往下看吧!
其实啊,正则表达式没那么难,它就是一种 “文字过滤器”,用特殊符号写规则,让电脑按规则找文字。就像筛沙子,你想要直径 3 毫米的沙子,做个 3 毫米的筛子就行,正则表达式就是这个 “筛子” 的图纸。

一、第一天:搞懂正则表达式到底是啥?能做啥?


可能有朋友会问,学这玩意儿有啥用?说白了,正则表达式就是帮你快速处理文字的工具,生活工作中到处都能用:
  • 验证:比如注册账号时检查手机号格式对不对、邮箱有没有 @符号;
  • 提取:从一大段文字里抓出所有手机号、网址、日期;
  • 替换:把文本里的错别字统一替换,或者给敏感词打马赛克。

网友小李分享:“我之前整理客户资料,几百个手机号格式乱七八糟,用正则表达式一键提取加格式化,半小时搞定,之前手动弄要半天!” 所以说,学会正则能省超多时间。
正则表达式的核心就是 “规则”,咱们用符号写规则,比如想找所有数字,规则就是 “[0-9]”,电脑就会按这个规则把数字都找出来。

二、第二天:基础符号入门,这几个 “元老” 必须会


正则表达式的符号看着多,其实常用的就几个,第二天咱们先搞定最基础的:

1. 普通字符:就是你看到的文字本身


字母、数字、汉字这些,写在正则里就代表匹配它们自己。比如正则 “abc”,就能匹配文本里的 “abc” 字符串,简单吧?

2. 通配符 “.”:匹配任意一个字符(除了换行)


这个点可厉害了,代表任何一个字符。比如正则 “a.b”,能匹配 “a1b”“aab”“a@b”,只要中间是一个字符就行,但不能匹配 “ab”(中间没字符)或者 “a12b”(中间两个字符)。

3. 边界符号 “^” 和 “$”:限定开头和结尾


  • “^” 表示开头,比如 “^abc”,只匹配以 “abc” 开头的字符串,像 “abc123” 能匹配,“xabc” 就不行;
  • ”,只匹配以 “abc” 结尾的字符串,像 “123abc” 能匹配,“abcx” 就不行;
  • 两个一起用 “^abc$”,就只能匹配 “abc” 这三个字符,多一个少一个都不行,常用在精确验证。

三、第三天:字符类 “[]”,批量匹配一类字符


第二天学的符号一次只能匹配单个或固定字符,第三天学的 “[]” 能批量匹配一类字符,超实用!

1. 匹配指定范围的字符


  • “[0-9]”:匹配任意一个数字,和 “\d” 效果一样(后面会讲 \d);
  • “[a-z]”:匹配任意一个小写字母;
  • “[A-Z]”:匹配任意一个大写字母;
  • “[a-zA-Z0-9]”:匹配任意一个字母或数字,也就是常见的 “字母数字组合”。

比如正则 “[0-9]{11}”,就能匹配 11 个数字(手机号长度),后面的 “{11}” 是量词,明天学~

2. 排除字符 “[^]”


在 “[]” 里加个 “^”,就表示 “不匹配这些字符”。比如 “[^0-9]”,匹配所有不是数字的字符,用来过滤非数字超方便。

四、第四天:量词 “*+?{}”,控制匹配次数


光有字符规则还不够,得告诉电脑匹配几次,这就是量词的作用,第四天重点学这四个:
量词意思例子匹配效果
*匹配 0 次或多次a*匹配 “”“a”“aa”“aaa”
+匹配 1 次或多次a+匹配 “a”“aa”“aaa”(不能匹配空)
?匹配 0 次或 1 次a?匹配 “” 或 “a”
{n}匹配正好 n 次a{3}只匹配 “aaa”
{n,}匹配至少 n 次a{2,}匹配 “aa”“aaa”“aaaa”
{n,m}匹配 n 到 m 次a{2,3}匹配 “aa”“aaa”

比如手机号是 11 位数字,正则就是 “^1 [3-9][0-9]{9}$”:
  • “^1”:开头是 1;
  • “[3-9]”:第二位是 3-9(手机号第二位规则);
  • “[0-9]{9}”:后面 9 位是任意数字;
  • “$”:结尾,确保总长度 11 位。

五、第五天:常用预定义类,偷懒专用符号


正则里有一些简写符号,代替常用的字符类,记不住全称的话,记这些简写更方便:
  • “\d”:等同于 “[0-9]”,匹配数字;
  • “\D”:等同于 “[^0-9]”,匹配非数字;
  • “\w”:等同于 “[a-zA-Z0-9_]”,匹配字母、数字、下划线;
  • “\s”:匹配空格、制表符、换行符等空白字符。

比如提取文本里的所有数字,用 “\d+” 比 “[0-9]+” 简单多了,写起来也快。

六、第六天:分组 “()” 和转义 “\”,处理复杂规则


遇到复杂规则,比如 “ababab” 这种重复的结构,就得用分组了,第六天学这两个进阶符号:

1. 分组 “()”:把多个字符当一个整体


比如正则 “(ab)+”,能匹配 “ab”“abab”“ababab”,因为 “(ab)” 是一个组,“+” 作用于整个组。

2. 转义 “\”:让特殊符号变普通


正则里的 “.”“*”“()” 这些是特殊符号,想匹配它们本身就得加 “\” 转义。比如想匹配 “www.baidu.com” 里的点,正则得写 “www.baidu.com”,不然 “.” 会匹配任意字符。

七、第七天:实战案例,这 3 个常用表达式必须会


学了六天语法,第七天用实战巩固,这三个场景天天能用到:

1. 验证邮箱格式


邮箱规则:用户名 @域名,比如 “abc123@qq.com”,正则表达式:
“^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+.[a-zA-Z0-9_-]+$”
  • “[a-zA-Z0-9_-]+”:用户名可以是字母、数字、下划线、减号,至少 1 个;
  • “@”:必须有 @符号;
  • “[a-zA-Z0-9_-]+”:域名主体;
  • “.”:点号转义;
  • 最后是域名后缀,比如 “com”“cn”。

2. 提取文本里的所有手机号


一段文字里有多个手机号,用正则 “1 [3-9]\d {9}”,在提取工具里用这个规则,就能把所有手机号都抓出来,不用一个个找。

3. 替换敏感词


比如把文本里的 “垃圾” 替换成 “”,正则写 “垃圾”,替换成 “” 就行;如果有多个敏感词,用 “|” 分隔,比如 “垃圾 | 笨蛋”,一次性替换多个。

自问自答:新手常踩的坑,帮你填好了


问:为啥我写的正则匹配结果不对,要么漏要么多?


答:大概率是没加边界符 “^”。比如验证手机号,没加“^” 的话,“13800138000123” 这种超长数字也会被匹配(因为包含 11 位数字),加了 “^$” 就只会匹配正好 11 位的。

问:量词 “*” 和 “+” 到底啥区别?什么时候用哪个?


答:“” 可以匹配 0 次,“+” 至少匹配 1 次。比如验证 “是否填写手机号”,用 “\d {11}+”(必须填);如果是 “可选填手机号”,就用 “\d {11}”(可以不填)。

问:在线工具里测试能用,放到代码里就不行,咋回事?


答:可能是转义问题!比如在 JavaScript 里写正则,“\d” 要写成 “\d”,因为代码里 “\” 本身是转义符,得再加一个 “\” 才行,不同编程语言转义规则可能不一样,这点要注意。

兔子哥的小建议


学正则表达式千万别死记硬背,没用!最好的方法是 “边练边记”,找个在线正则测试工具(比如 “regex101”),看到一个规则就输进去试试,改改符号看匹配结果怎么变,印象会特别深。
刚开始别追求复杂表达式,先把手机号、邮箱这些常用的练熟,遇到问题就拆成小规则,比如手机号拆成 “开头 1”“第二位 3-9”“后面 9 位数字”,一步步拼起来。
其实正则表达式就像学拼音,刚开始觉得字母和声调难,但学会了就能拼所有汉字。7 天时间足够掌握常用规则,以后遇到文本处理问题,你会发现正则表达式真的超好用,省下来的时间喝杯奶茶不香吗?希望这篇教程能帮你轻松入门,以后处理文字再也不用愁啦!

标签: 正则表达式 乱七八糟

发布评论 1条评论)

  • Refresh code

评论列表

2025-10-24 21:55:20

零基础学正则,7天轻松掌握。