🧠 正则表达式:程序员的搜索超能力!
你有没有遇到过这种情况:
- 想把文章里的所有邮箱地址提取出来?
- 想检查用户输入的手机号格式是否正确?
- 或者想快速找出一个文本里所有以“http”开头的链接?
这些事都可以用一个神器解决,它叫做:正则表达式。
🌀 什么是正则表达式?
用人话讲,正则表达式就是用来搜索、匹配、提取、替换字符串的高级搜索语法。
举个例子,你在记事本里按 Ctrl + F
搜索“hello”,这就很原始。而正则表达式,就像是在搜索栏里加上了魔法公式,让你可以干:
- 查找所有以“a”开头、以“z”结尾的词;
- 匹配所有包含数字的句子;
- 或者精准地抓出所有手机号、身份证号、网址……
比如这个正则表达式:
\d{11}
它可以用来匹配 11位数字,比如中国大陆的手机号。
🧩 基本语法——你一定能看懂!
符号 | 意思 | 示例 | 解释 | ||
---|---|---|---|---|---|
. | 任意字符(除了换行) | a.b | 匹配 aXb ,X 是任意字符 | ||
\d | 任意数字(0~9) | \d\d\d | 匹配 3 个数字,比如 123 | ||
\w | 任意字母或数字 | \w+ | 匹配单词 | ||
+ | 重复一次或多次 | a+ | 匹配 a 、aa 、aaa | ||
* | 重复零次或多次 | bo* | 匹配 b 、bo 、booo | ||
? | 重复零次或一次 | colou?r | 匹配 color 或 colour | ||
[] | 字符集 | [aeiou] | 匹配任意元音字母 | ||
^ | 开头 | ^Hello | 匹配以 Hello 开头 | ||
$ | 结尾 | world$ | 匹配以 world 结尾 | ||
() | 分组 | (ab)+ | 匹配 ab 、abab | ||
` | ` | 或 | `cat | dog` | 匹配 cat 或 dog |
📦 实用案例
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?
:匹配http
或https
;:\/\/
:匹配冒号双斜杠;[^\s]+
:匹配不是空格的任意内容,直到遇到空格结束。
bonus 🎁:提取中文字符
regex
[\u4e00-\u9fa5]
这个能提取所有中文字符。
⚠️ 正则使用建议
不要过度使用:不是所有问题都要用正则解决,正则是很强,但也很难维护。
尽量写得清晰:可以加注释,或者拆成多个部分组合。
测试工具推荐: