正则表达式教程零基础:语法详解+入门案例,3天学会基础匹配

admin 综合编程开发技术 3


刚接触正则表达式的新手是不是总觉得它像 “天书”?看着一堆乱七八糟的符号(比如 ^、” 这个手机号验证表达式看了半天,愣是没搞懂每个符号的作用,后来拆成单个符号逐个理解,才慢慢入门。今天就带零基础的朋友从基础语法讲到入门案例,按 3 天计划一步步学,新手也能轻松掌握基础匹配,一起往下看吧!

第一天:搞懂核心语法符号,正则不再是 “天书”


基础问题:正则表达式到底是啥?学它有啥用?


简单说,正则表达式就是一种 “规则代码”,用来快速匹配文本中的特定内容。比如你想从一堆文字里找出所有手机号,或者验证用户输入的邮箱格式对不对,用正则表达式几行代码就能搞定,比手动筛选快 10 倍不止。它在表单验证、数据提取、日志分析这些场景里特别常用,学会了能省很多重复劳动。

必学核心符号:5 个基础符号先记牢


正则表达式的核心是各种符号,就像数学里的 +、-、×、÷,每个符号有特定作用。新手先吃透这 5 个,基础匹配就够用了:
  • .(点):匹配任意一个字符(除了换行),比如 “a.b” 能匹配 “aab”“acb”“a1b”,只要中间是一个字符就行。
  • \d:匹配任意一个数字(0-9),比如 “\d\d” 能匹配 “12”“35”“99”,但不能匹配 “ab”“1a”。
  • \w:匹配字母、数字或下划线,比如 “\w\w” 能匹配 “a1”“_3”“x y”(注意空格不算哦)。
  • (星号):表示前面的字符可以出现 0 次或多次,比如 “abc” 中,b 可以没有(匹配 “ac”)、有 1 个(匹配 “abc”)、有多个(匹配 “abbc”“abbbc”)。
  • +(加号):和星号类似,但表示前面的字符至少出现 1 次,比如 “ab+c” 必须有至少 1 个 b,能匹配 “abc”“abbc”,但不能匹配 “ac”。

符号作用例子匹配结果
.任意字符a.baab、a1b、axb
\d数字\d{2}12、30、99
\w字母 / 数字 / 下划线\w+abc、123、a_b
*0 次或多次a*bb、ab、aab
+至少 1 次a+bab、aab、aaab

兔子哥提醒:这些符号看起来多,但不用死记,结合例子练几遍就熟了。比如记不住 “” 和 “+” 的区别,就想 “” 像 “星星” 一样可有可无,“+” 像 “加号” 一样必须有一个。

第二天:掌握边界与量词,让匹配更精准


场景问题:匹配时总多匹配内容?边界符号来帮忙


第一天学的符号能匹配内容,但有时候会 “超额匹配”。比如想匹配 “cat”,结果 “category” 里的 “cat” 也被匹配到了;想匹配完整的手机号,结果从长数字里截了中间 11 位。这时候就得用边界符号控制匹配范围。

必学边界符号:2 个符号定范围


  • ^(脱字符):表示匹配文本的开头,比如 “^abc” 只能匹配以 “abc” 开头的文本,像 “abc123” 能匹配,“xabc” 就不能。
  • **” 只能匹配以 “abc” 结尾的文本,像 “123abc” 能匹配,“abcx” 就不能。
  • 组合用法:“^abc$” 表示整个文本只能是 “abc”,多一个字符少一个字符都不行,适合验证固定格式的内容(如手机号、邮编)。

量词:控制字符出现的次数


除了 * 和 +,这些量词能更精准控制次数:
  • {n}:正好出现 n 次,比如 “\d {3}” 匹配正好 3 个数字(“123”“456”)。
  • {n,}:至少出现 n 次,比如 “\d {2,}” 匹配 2 个及以上数字(“12”“345”“6789”)。
  • {n,m}:出现 n 到 m 次,比如 “\d {2,4}” 匹配 2-4 个数字(“12”“345”“6789”,但不匹配 “1” 或 “12345”)。

例子:验证手机号的正则 “^\d {11}$”,意思就是 “开头到结尾必须是 11 个数字”,这样就不会从长数字里误截了。


第三天:入门案例实战,用正则解决实际问题


基础问题:学了语法不会用?3 个案例带你练


光看语法没用,跟着案例动手做,才能真正学会。选 3 个最常用的场景,一步步教你写正则。

案例 1:验证手机号(国内手机号规则:11 位数字,以 1 开头)


步骤:
  1. 确定开头:手机号必须以 1 开头,用 “^1”。
  2. 中间数字:后面需要 10 个数字,用 “\d {10}”。
  3. 确定结尾:整个字符串只能是这 11 位,用 “`
    测试:能匹配 “13812345678”,不能匹配 “12345678901”(开头不是 1)、“1381234567”(不够 11 位)。

案例 2:提取文本中的邮箱(邮箱规则:xxx@xxx.xxx)


步骤:
  1. 用户名部分:可以是字母、数字、下划线,用 “\w+”。
  2. 分隔符:必须有 @,用 “@”。
  3. 域名部分:字母、数字、点,用 “\w+.\w+”(注意。在正则里是特殊符号,需要用 \ 转义成.)。
    组合起来:\w+@\w+\.\w+
    测试:能从 “联系我:abc123@qq.com 或 x_y@163.com” 中提取出 “abc123@qq.com” 和 “x_y@163.com”。

案例 3:验证身份证号(18 位,前 6 位地址码,中间 8 位生日,后 4 位校验码)


步骤:
  1. 前 6 位:数字,用 “\d {6}”。
  2. 生日部分:年 4 位 + 月 2 位 + 日 2 位,用 “\d {4}\d {2}\d {2}”。
  3. 后 4 位:最后一位可能是 X(大写),用 “\d {3}[0-9X]”([0-9X] 表示匹配 0-9 或 X)。
  4. 整体边界:用 ^ 和`
    测试:能匹配 “110101199001011234”“11010119900101123X”,不能匹配 “11010119900101123”(不够 18 位)。

避坑指南:新手最容易踩的 5 个错


  1. 忘记转义特殊符号
    想匹配 “.” 却直接写 “.”,结果匹配了任意字符。解决:特殊符号(.、*、+、? 等)需要用 \ 转义,比如匹配 “www.baidu.com” 里的点,要用 “www.baidu.com”。
  2. 边界符号用错导致匹配范围不对
    验证手机号没加 ^ 和限定开头结尾。
  3. 量词和符号搭配错
    想匹配 “3-5 个字母” 写成 “[a-z]{3,5}” 是对的,但写成 “a-z {3,5}” 就错了(只会让 z 重复 3-5 次)。解决:量词前面是单个符号或括号里的整体,范围性的用 [] 括起来。
  4. 过度依赖复制粘贴,不理解原理
    网上抄的正则能用但不会改,换个场景就失效。解决:学的时候拆成单个符号理解,比如把 “^\d {11}”,搞懂每个部分的作用。
  5. 一开始就挑战复杂案例
    刚学就想写匹配 HTML 标签的正则,结果越学越懵。解决:从简单的手机号、邮箱开始,熟练后再挑战复杂场景,循序渐进。

网友 “正则小白” 分享:“之前写邮箱正则总错,后来发现是没转义 @后面的点,写成‘\w+@\w+\w+’,改成‘\w+@\w+.\w+’就对了,转义符号太重要了!”

自问自答:新手常问的问题


“正则表达式难学吗?3 天真的能学会基础匹配?”
其实不难!基础语法就那几个符号,3 天掌握基础匹配完全没问题。难的是复杂场景的组合运用,但新手先搞定基础匹配(验证格式、简单提取),就能应付大部分日常需求,后面再慢慢进阶。
“学正则需要背很多符号吗?记不住怎么办?”
不用死记!常用的符号就十几个,结合案例练几遍自然就记住了。可以建个 “正则符号笔记.txt”,把常用符号和例子记下来,忘了就翻一翻,用多了就熟了。
“不同编程语言的正则用法一样吗?学了通用语法还要学语言专属的吗?”
基础语法(.、\d、*、+ 等)在 Python、JavaScript、Java 里都一样,但有些细节有差异,比如转义符号在 Python 里可能需要多加一个 \。新手先学通用语法,用到具体语言时再查对应的差异点就行。

结尾心得


正则表达式入门的关键是 “拆符号 + 多练习”。兔子哥的经验是,别被一堆符号吓住,把复杂的正则拆成单个符号逐个理解,就像拆积木一样;每天花 30 分钟练 1-2 个案例,3 天下来基础匹配肯定能掌握。刚开始写错没关系,用在线工具(比如 “正则表达式测试工具”)多测试,看哪里匹配错了,对着符号表找原因。其实正则就像学英语,基础语法是 “单词”,案例是 “句子”,练多了自然就会用。学会基础匹配后,你会发现验证表单、提取数据这些工作变得特别简单,加油,新手也能轻松学好正则!

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

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~