正则表达式入门:从零开始掌握文本匹配
什么是正则表达式?
正则表达式(Regular Expression,简称 Regex)是一种用于描述字符串匹配模式的工具。它可以用来:
- 验证输入格式(邮箱、手机号等)
- 搜索和替换文本
- 提取特定信息
- 数据清洗和处理
基础语法
字面字符
最简单的正则表达式就是普通字符,它们匹配自身:
``
hello 匹配 "hello"
123 匹配 "123"
`
特殊字符(元字符)
| 字符 | 含义 |
|---|
. | 匹配任意单个字符 |
|---|
^ | 匹配字符串开头 |
|---|
$ | 匹配字符串结尾 |
|---|
| 匹配前面的字符 0 次或多次 |
|---|
+ | 匹配前面的字符 1 次或多次 |
|---|
? | 匹配前面的字符 0 次或 1 次 |
|---|
\ | 转义特殊字符 |
|---|
字符类
`
[abc] 匹配 a、b 或 c
[a-z] 匹配任意小写字母
[0-9] 匹配任意数字
[^abc] 匹配除 a、b、c 以外的字符
`
预定义字符类
`
\d 匹配数字,等同于 [0-9]
\D 匹配非数字
\w 匹配单词字符(字母、数字、下划线)
\W 匹配非单词字符
\s 匹配空白字符
\S 匹配非空白字符
`
量词
`
{n} 精确匹配 n 次
{n,} 匹配至少 n 次
{n,m} 匹配 n 到 m 次
`
分组和捕获
使用圆括号 () 可以创建捕获组:
`
(abc)+ 匹配一个或多个 "abc"
(\d{4})-(\d{2})-(\d{2}) 匹配日期格式
`
常用正则表达式示例
邮箱验证
`
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
`
手机号验证(中国)
`
^1[3-9]\d{9}$
`
URL 匹配
`
https?:\/\/[\w\-]+(\.[\w\-]+)+[\w\-.,@?^=%&:/~+#]
`
中文字符
`
[\u4e00-\u9fa5]+
`
在 JavaScript 中使用正则
`javascript
// 创建正则表达式
const regex = /hello/i; // i 表示不区分大小写
// 测试匹配
regex.test('Hello World'); // true
// 搜索匹配
'Hello World'.match(/\w+/g); // ['Hello', 'World']
// 替换
'Hello World'.replace(/World/, 'Regex'); // 'Hello Regex'
``
使用 EfficTools 测试正则
学习正则表达式最好的方法是实践。使用我们的正则表达式测试工具,您可以:
- 实时测试正则表达式
- 查看匹配结果高亮
- 查看捕获组内容
- 支持多种标志位
学习建议
总结
正则表达式是一项值得投入时间学习的技能。虽然初看起来可能有些复杂,但掌握基础语法后,它将成为您处理文本的得力助手。