1. 基本字符
- 普通字符 :匹配自身。例如,正则表达式
hello匹配字符串中的"hello"。 - \d :匹配任何数字字符,相当于
[0-9]。例如,\d\d\d匹配三个连续的数字。- 示例 :
123、456
- 示例 :
- \w :匹配任何字母数字字符(包括下划线),相当于
[A-Za-z0-9_]。- 示例 :
a1b_、Z9x
- 示例 :
- \s :匹配任何空白字符(空格、制表符等),相当于
[ \t\n\r\f\v]。- 示例 :
"Hello, World!\nThis is a test."中的换行符\n
- 示例 :
- . :匹配除换行符
\n之外的任何单个字符。- 示例 :
a.c可以匹配abc、a1c等
- 示例 :
2. 元字符
- ^ :匹配输入字符串的开始位置。
- 示例 :
^hello匹配以"hello"开头的字符串。
- 示例 :
- $ :匹配输入字符串的结束位置。
- 示例 :
world$匹配以"world"结尾的字符串。
- 示例 :
- *****:匹配前面的子表达式零次或多次。
- 示例 :
ab*可以匹配a、ab、abb等。
- 示例 :
- + :匹配前面的子表达式一次或多次。
- 示例 :
ab+可以匹配ab、abb、abbb等,但不匹配a。
- 示例 :
- ? :匹配前面的子表达式零次或一次。
- 示例 :
ab?可以匹配a或ab。
- 示例 :
- {n} :匹配前面的子表达式恰好n次。
- 示例 :
a{3}匹配aaa。
- 示例 :
- {n,} :匹配前面的子表达式至少n次。
- 示例 :
a{2,}匹配aa、aaa、aaaa等。
- 示例 :
- {n,m} :匹配前面的子表达式至少n次,至多m次。
- 示例 :
a{2,4}匹配aa、aaa或aaaa。
- 示例 :
3. 方括号表达式
- [abc] :匹配方括号内的任一字符。
- 示例 :
[abc]可以匹配a、b或c。
- 示例 :
- [^abc] :匹配不在方括号内的任一字符。
- 示例 :
[^abc]可以匹配除a、b、c之外的任何字符。
- 示例 :
- [a-z] :匹配指定范围内的任一字符。
- 示例 :
[a-z]匹配任何小写字母。
- 示例 :
4. 分组和捕获
- () :用于分组子表达式,并可以捕获匹配的文本。
- 示例 :
(abc)\1匹配abcabc,其中\1表示引用第一个捕获组。
- 示例 :
- | :表示"或"操作。
- 示例 :
a|b匹配a或b。
- 示例 :
- ****:用于转义元字符,使其匹配自身。
- 示例 :
\.匹配句点.字符本身。
- 示例 :
5. 非捕获组和前瞻
- (?:...) :非捕获组,匹配但不捕获文本。
- 示例 :
(?:abc)匹配abc但不捕获。
- 示例 :
- (?=...) :正向前瞻,匹配前面的子表达式,但不包括在结果中。
- 示例 :
foo(?=bar)匹配foo,如果后面跟着bar。
- 示例 :
- (?!..) :负向前瞻,匹配前面的子表达式,如果后面不跟着指定的子表达式。
- 示例 :
foo(?!bar)匹配foo,如果后面不是bar。
- 示例 :
6. 边界匹配
- \b :匹配一个单词边界,即字与空格间的位置。
- 示例 :
\bword\b匹配完整的单词word。
- 示例 :
- \B:匹配非单词边界的位置。
7. 常见示例
- 匹配数字 :
\d+匹配一个或多个连续的数字。- 示例 :
12345
- 示例 :
- 匹配字母 :
\w+匹配一个或多个字母数字字符。- 示例 :
a1b2c3
- 示例 :
- 匹配邮箱地址 :
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$- 示例 :
example@email.com
- 示例 :
- 匹配URL :
^(http|https)://[^\s/$.?#].[^\s]*$- 示例 :
http://www.example.com
- 示例 :
- 提取手机号码 :
\b1[3-9]\d{9}\b- 示例 :
13812345678
- 示例 :
- 匹配日期格式 :
\d{4}-\d{2}-\d{2}- 示例 :
2023-05-15
- 示例 :