什么是正则表达式?
正则表达式(regex 或 regexp)是定义搜索模式的字符序列。它们几乎内置于每种编程语言中,并用于:
- 验证:此字符串是否与有效电子邮件地址的模式匹配?
- 搜索:查找这 10,000 个单词中的所有电话号码文档。
- 替换:将所有出现的“color”替换为“color”。
- 提取:从块中提取所有网址HTML。
- 分割:以逗号分割字符串,但不在引号内分割逗号。
核心元字符及其匹配内容

| 角色 | 匹配 | 示例 |
|---|---|---|
。 | 任意除换行符外的单个字符 | c.t 匹配“cat”、“cot”、 "cut" |
d | 任意数字(0–9) | ddd 匹配"123" |
w | 单词字符(A-Z、a-z、0-9、 _) | w+ 匹配"hello_world" |
s | 空白(空格、制表符、 newline) | s+ 匹配任何空白 |
D | 非数字 | D+匹配“hello” |
W | 非单词字符 | W 与“!”匹配或"," |
S | 非空白 |
转义: 要匹配文字元字符,请使用 \ 进行转义。要匹配文字 .,请使用 \.
量词:重复模式

| 量词 | 含义 | 示例 |
|---|---|---|
* | 0或更多(贪婪) | ab*c 匹配“ac”、“abc”, "abbc" |
+ | 1 或更多(贪婪) | ab+c 匹配“abc”、“abbc”,但不匹配“ac” |
? | 0 或 1 (可选) | colou?r 匹配“颜色”并且"颜色" |
{n} | 正好 n times | d{4} 正好匹配 4数字 |
{n,m} | n 和 m 之间times | d{3,5} 匹配 3、4 或 5数字 |
*? | 0 或更多(惰性) | 匹配可能 |
+? | 1个或更多(惰性) | 匹配最少可能 |
角色类和锚点

字符类别 [...]: 匹配一组字符中的任意一个字符。
[aeiou]— 匹配任何元音[A-Z]— 任何大写字母letter[0-9]— 任何数字(与d)[^aeiou]- 任何不是元音的字符(否定)
锚点: 匹配位置,而不是字符。
^— 匹配字符串的开头$— 匹配字符串的结尾string— 匹配字边界
实用正则表达式:电子邮件、电话、网址模式


基本电子邮件验证:
^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$
美国电话号码(多种格式):
^(\+1)?[\s.-]?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$
从文本中提取网址:
https?:\/\/[\w\-]+(\.[\w\-]+)+[/#?]?[\w\-._~:/?#[\]@!$&'()*+,;=%]*使用免费的客户端 正则表达式在线测试 (Regex Tester) 实时测试和调试所有这些模式,并具有即时匹配突出显示功能。