正则表达式(Regular Expression,简称 regex 或 regexp)是开发中处理文本的强大工具。无论是数据验证、字符串提取,还是文本格式化,正则表达式都能高效完成任务。本文将介绍正则表达式的基本语法、常用匹配规则及其应用场景。
1. 正则表达式的基本语法
正则表达式由普通字符和特殊字符组成,用于定义字符串的匹配模式。以下是正则表达式的基本语法:
1.1 普通字符
普通字符匹配自身。例如:
a
匹配字符a
。123
匹配字符串123
。
1.2 特殊字符
特殊字符用于定义复杂的匹配规则。以下是常见的特殊字符:
字符 | 描述 |
---|---|
. |
匹配任意单个字符(除换行符)。 |
* |
匹配前一个字符的零次或多次。 |
+ |
匹配前一个字符的一次或多次。 |
? |
匹配前一个字符的零次或一次。 |
^ |
匹配字符串的开头。 |
$ |
匹配字符串的结尾。 |
\d |
匹配数字字符,等价于 [0-9] 。 |
\w |
匹配字母、数字或下划线,等价于 [a-zA-Z0-9_] 。 |
\s |
匹配空白字符(空格、制表符、换行符等)。 |
[] |
匹配括号内的任意一个字符。例如 [abc] 匹配 a 、b 或 c 。 |
() |
分组,将多个字符作为一个整体处理。 |
| | 或操作符。例如 `a|b` 匹配 a或 b |
\ |
转义字符,用于匹配特殊字符本身。例如 \. 匹配字符 . 。 |
2. 常用的正则表达式规则
以下是开发中常用的正则表达式规则及其用途。
2.1 验证邮箱地址
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
用途:验证用户输入的邮箱地址是否合法。
示例:
合法:
test@example.com
非法:
test@.com
2.2 验证手机号码
^(?:\+?86)?1[3-9]\d{9}$
用途:验证中国大陆手机号码。
示例:
合法:
13800138000
,+8613800138000
非法:
12345678901
2.3 验证 URL
^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$
用途:验证 URL 是否合法。
示例:
合法:
https://www.example.com
,http://example.com/path
非法:
example.com
2.4 验证日期格式(YYYY-MM-DD)
^\d{4}-\d{2}-\d{2}$
用途:验证日期格式是否为
YYYY-MM-DD
。示例:
合法:
2023-10-05
非法:
2023/10/05
2.5 验证身份证号码(中国大陆)
^\d{17}[\dXx]$
用途:验证中国大陆身份证号码(18 位,最后一位可能是数字或
X
)。示例:
合法:
110105199003071234
,11010519900307123X
非法:
11010519900307123
2.6 验证密码强度
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
用途:验证密码是否包含至少一个字母和一个数字,且长度至少为 8。
示例:
合法:
Password123
非法:
password
2.7 提取 HTML 标签中的内容
<([a-z]+)[^>]*>(.*?)<\/\1>
用途:提取 HTML 标签及其内容。
示例:
输入:
<div>Hello World</div>
匹配:
<div>Hello World</div>
2.8 匹配 IP 地址
^(\d{1,3}\.){3}\d{1,3}$
用途:验证 IPv4 地址。
示例:
合法:
192.168.1.1
非法:
256.256.256.256
2.9 匹配中文字符
[\u4e00-\u9fa5]
用途:匹配中文字符。
示例:
输入:
你好,世界!
匹配:
你
,好
,世
,界
2.10 匹配十六进制颜色值
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
用途:验证十六进制颜色值。
示例:
合法:
#ffffff
,#fff
非法:
#zzz
3. 正则表达式的应用场景
3.1 数据验证
在表单提交时,正则表达式可以快速验证用户输入的数据是否合法。例如:
验证邮箱、手机号、身份证号等格式。
验证密码强度是否符合要求。
3.2 文本提取
从复杂的文本中提取特定内容。例如:
提取 HTML 标签中的内容。
从日志文件中提取特定格式的数据。
3.3 文本替换
将符合模式的字符串替换为其他内容。例如:
将文本中的敏感词替换为
***
。格式化日期字符串。
3.4 字符串分割
根据模式将字符串拆分为多个部分。例如:
按逗号或空格分割字符串。
从文件路径中提取目录和文件名。
4. 总结
正则表达式是开发中不可或缺的工具,熟练掌握其基本语法和常用规则可以显著提高开发效率。本文介绍了正则表达式的基本语法、常用匹配规则及其应用场景,希望对你的开发工作有所帮助。如果你有更多正则表达式的使用技巧,欢迎在评论区分享!