zhangjingyu
由于您上一轮询问的是“正则表达式使用方法”,而之前我请您提供具体表达式,这次您直接问了使用方法,那我就为您系统讲解正则表达式(Regular Expression,简称 regex)的基础使用方法。
一、什么是正则表达式?
它是一种文本模式匹配的工具,用来查找、替换、提取符合特定规则的字符串。
例如:判断用户输入的邮箱格式是否正确、从一大段文字里提取所有手机号。
二、基本语法速查(常用符号)
符号含义示例匹配结果
.任意单个字符(除换行符)a.cabc, a&c, a c
*前一个字符出现 0 次或多次ab*cac, abc, abbbc
+前一个字符出现 1 次或多次ab+cabc, abbbc(不匹配 ac)
?前一个字符出现 0 次或 1 次ab?cac, abc
{n}前一个字符出现 恰好 n 次a{3}aaa
{n,m}出现 n 到 m 次a{2,4}aa, aaa, aaaa
[ ]字符集合中的任意一个a 或 b 或 c
[^ ]不在集合中的任意一个[^0-9]非数字字符
^行的开头^Hello行首的 Hello
$行的结尾world$行尾的 world
\d数字,等价 [0-9]\d{3}123
\w单词字符(字母/数字/下划线)\w+abc_123
\s空白字符(空格、tab等)a\sba b
|或cat|dogcat 或 dog
( )分组/捕获(ab)+ab, abab
三、在常见编程语言中使用
1. Python 示例
python
import re
text = "我的电话是13812345678,邮箱是test@example.com"
# 提取手机号(简单版)
phone = re.search(r'1[3-9]\d{9}', text)
print(phone.group())# 13812345678
# 查找所有邮箱
emails = re.findall(r'\w+@\w+\.\w+', text)
print(emails)# ['test@example.com']
# 替换
new_text = re.sub(r'\d{11}', '***********', text)
print(new_text)
2. JavaScript 示例
javascript
const str = "price: 12.5, tax: 3.2";
const numbers = str.match(/\d+(\.\d+)?/g);
console.log(numbers); // ["12.5", "3.2"]
// 验证是否为数字
const isNum = /^\d+$/.test("123a"); // false
3. 在文本编辑器中使用(VS Code、Sublime、Notepad++)
按 Ctrl+F,勾选“正则表达式”选项(通常图标是 .*)
查找 \d{4}-\d{2}-\d{2} 可以匹配日期如 2026-04-11
四、常见使用场景举例
场景正则表达式示例
判断是否为纯数字^\d+$
手机号(简单中国)1[3-9]\d{9}
邮箱(基础版)\w+@\w+\.\w+
匹配 IP 地址(v4)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}
提取所有中文[\u4e00-\u9fa5]+
去掉首尾空格^\s+|\s+$ 配合替换为空
五、使用注意事项
转义:正则中 . * + ? [ ] ( ) { } ^ $ | \ 都有特殊含义,要匹配它们本身需加反斜杠,例如 \. 匹配点号。
贪婪与懒惰:* 和 + 默认尽量多匹配(贪婪),后面加 ? 变为尽量少匹配(懒惰),如 匹配单个 HTML 标签。
测试工具:推荐先用在线工具测试(如 regex101.com 或 regexr.com),再写入代码。
性能:非常复杂的正则(尤其是大量嵌套 .*)可能导致灾难性回溯。
六、简单练习建议
匹配一个 6 到 12 位的用户名(只含字母数字下划线):^\w{6,12}$
提取文本中所有形如 abc-123 的模式(字母-数字):+-\d+
验证日期格式 2026-04-11:^\d{4}-\d{2}-\d{2}$
如果您有具体的一个正则表达式(比如你在某段代码里看到 ^+@+\.{2,}$),请直接发给我,我可以逐段解释它的含义。

