Skip to content

🧠 正则表达式:程序员的搜索超能力!

你有没有遇到过这种情况:

  • 想把文章里的所有邮箱地址提取出来?
  • 想检查用户输入的手机号格式是否正确?
  • 或者想快速找出一个文本里所有以“http”开头的链接?

这些事都可以用一个神器解决,它叫做:正则表达式

🌀 什么是正则表达式?

用人话讲,正则表达式就是用来搜索、匹配、提取、替换字符串的高级搜索语法

举个例子,你在记事本里按 Ctrl + F 搜索“hello”,这就很原始。而正则表达式,就像是在搜索栏里加上了魔法公式,让你可以干:

  • 查找所有以“a”开头、以“z”结尾的词;
  • 匹配所有包含数字的句子;
  • 或者精准地抓出所有手机号、身份证号、网址……

比如这个正则表达式:

\d{11}

它可以用来匹配 11位数字,比如中国大陆的手机号。

🧩 基本语法——你一定能看懂!

符号意思示例解释
.任意字符(除了换行)a.b匹配 aXb,X 是任意字符
\d任意数字(0~9)\d\d\d匹配 3 个数字,比如 123
\w任意字母或数字\w+匹配单词
+重复一次或多次a+匹配 aaaaaa
*重复零次或多次bo*匹配 bbobooo
?重复零次或一次colou?r匹配 colorcolour
[]字符集[aeiou]匹配任意元音字母
^开头^Hello匹配以 Hello 开头
$结尾world$匹配以 world 结尾
()分组(ab)+匹配 ababab
```catdog`匹配 catdog

📦 实用案例

1. 匹配邮箱地址

regex
[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+

人话翻译:由字母、数字和一些符号组成的东西 + “@” + 一段域名。

示例能匹配:

  • hello@example.com
  • my.email+filter@gmail.co.uk

2. 匹配手机号(中国)

regex
^1[3-9]\d{9}$

人话翻译:

  • ^1:以 1 开头;
  • [3-9]:第二位是 3~9 的数字;
  • \d{9}:后面 9 个数字;
  • $:总共 11 位。

3. 匹配网址

regex
https?:\/\/[^\s]+
  • https?:匹配 httphttps
  • :\/\/:匹配冒号双斜杠;
  • [^\s]+:匹配不是空格的任意内容,直到遇到空格结束。

bonus 🎁:提取中文字符

regex
[\u4e00-\u9fa5]

这个能提取所有中文字符。

⚠️ 正则使用建议

  1. 不要过度使用:不是所有问题都要用正则解决,正则是很强,但也很难维护。

  2. 尽量写得清晰:可以加注释,或者拆成多个部分组合。

  3. 测试工具推荐