正则表达式使用
一、字符匹配
1. 普通字符
- 描述:直接匹配字符本身。
- 示例:
abc
匹配字符串中的 “abc”。Hello
匹配字符串中的 “Hello”。
2. 特殊字符
.
(点号):- 描述:匹配任意单个字符(除换行符外)。
- 示例:
a.c
匹配 “abc”, “adc”, “a c”(注意空格也是一个字符)。1.1
匹配 “1a1”, “121” 等。
\d
:- 描述:匹配数字(0-9)。
- 示例:
\d{3}
匹配 “123”, “456” 等三位数字。\d+
匹配一个或多个数字。
\w
:- 描述:匹配字母、数字或下划线(等价于
[A-Za-z0-9_]
)。 - 示例:
\w+
匹配 “username”, “Password123” 等。\w{5}
匹配恰好五个字母、数字或下划线的组合。
- 描述:匹配字母、数字或下划线(等价于
\s
:- 描述:匹配空白字符(空格、制表符、换行符等)。
- 示例:
\s+
匹配一个或多个空白字符。a\sb
匹配 “a b”(中间有一个空格)。
3. 字符集
[abc]
:- 描述:匹配方括号内的任意单个字符。
- 示例:
[aeiou]
匹配任意一个元音字母。[0-9]
匹配任意一个数字。
[^abc]
:- 描述:匹配不在方括号内的任意单个字符。
- 示例:
[^0-9]
匹配任意一个非数字字符。[^A-Za-z]
匹配任意一个非字母字符。
二、量词
1. +
(加号)
- 描述:匹配前面的字符或子表达式一次或多次。
- 示例:
a+
匹配 “a”, “aa”, “aaa” 等。\d+
匹配一个或多个数字。
2. *
(星号)
- 描述:匹配前面的字符或子表达式零次或多次。
- 示例:
a*
匹配 “”, “a”, “aa”, “aaa” 等。\s*
匹配零个或多个空白字符。
3. ?
(问号)
- 描述:匹配前面的字符或子表达式零次或一次(可选)。
- 示例:
colou?r
匹配 “color” 或 “colour”。https?
匹配 “http” 或 “https”。
4. {n,m}
(重复次数)
- 描述:匹配前面的字符或子表达式至少
n
次,至多m
次。 - 示例:
\d{3,5}
匹配 3 到 5 位数字。a{2,4}
匹配 “aa”, “aaa”, “aaaa”。
三、锚点
1. ^
(脱字符号)
- 描述:匹配字符串的开头。
- 示例:
^Hello
匹配以 “Hello” 开头的字符串。^1
匹配以数字 “1” 开头的字符串。
2. $
(美元符号)
- 描述:匹配字符串的结尾。
- 示例:
world$
匹配以 “world” 结尾的字符串。\d$
匹配以数字结尾的字符串。
3. \b
(单词边界)
- 描述:匹配单词的边界(如空格、标点符号或字符串的开头/结尾)。
- 示例:
\bcat\b
匹配独立的单词 “cat”。\b\w+\b
匹配一个完整的单词。
4. \B
(非单词边界)
- 描述:匹配非单词边界。
- 示例:
\Bcat\B
匹配 “category” 中的 “cat”。\B\w+\B
匹配单词的一部分。
5. 正向先行断言 (?=...)
- 描述:匹配后面紧跟特定模式的位置,但不消耗字符。
- 示例:
a(?=b)
匹配后面紧跟 “b” 的 “a”。\d+(?=%)
匹配百分比符号前的数字。
6. 负向先行断言 (?!...)
- 描述:匹配后面不紧跟特定模式的位置。
- 示例:
a(?!b)
匹配后面不跟 “b” 的 “a”。\d+(?!\.)
匹配不以点号结尾的数字。
四、综合案例及解释
匹配邮箱地址
[\w.-]+@[\w.-]+\.\w+
- 解释:
[\w.-]+
:匹配用户名(允许字母、数字、下划线、点和短横线)。@
:匹配邮箱符号。[\w.-]+
:匹配域名。\.\w+
:匹配顶级域名(如.com
,.cn
)。
- 解释:
匹配电话号码
(\+86)?\d{11}
- 解释:
(\+86)?
:匹配可选的国际区号 “+86”。\d{11}
:匹配 11 位数字(中国手机号码)。
- 解释:
匹配日期(YYYY-MM-DD 格式)
\d{4}-\d{2}-\d{2}
- 解释:
\d{4}
:匹配四位年份。-\d{2}
:匹配月份和日期。
- 解释:
匹配包含数字的单词
\b\w*\d\w*\b
- 解释:
\b
:确保匹配完整的单词。\w*\d\w*
:匹配包含至少一个数字的单词。
- 解释:
匹配特定格式的URL
https?://[\w.-]+(\.[\w-]+)+
- 解释:
https?
:匹配 “http” 或 “https”。://
:匹配协议和域名的分隔符。[\w.-]+
:匹配域名主体。(\.[\w-]+)+
:匹配顶级域名(如.com
,.cn
)。
- 解释: