一、正则
是一种用来描述、匹配和操作字符串的工具。它由一系列字符组成的模式构成,可以用来检索、替换、提取或验证文本数据。
二、正则表达式
由普通字符和特殊字符组成,通过定义匹配规则来实现对字符串的处理
三、正则表达式的基本语法规范
-
字符匹配:
-
普通字符:正则表达式中的普通字符(例如字母、数字、标点符号等)表示需要精确匹配该字符。
-
特殊字符:正则表达式中的一些特殊字符具有特殊的含义,如元字符(
^ $ . * + ? ( ) [ ] { } | \
) 和转义字符(\
)。 -
字符类:使用方括号
[ ]
表示一个字符类,可以指定多个可选字符,例如[abc]
匹配字符a
、b
或c
。
-
-
重复匹配:
-
量词:使用量词来指定匹配字符出现的次数,如
*
(0 次或多次)、+
(1 次或多次)、?
(0 次或 1 次)等。 -
贪婪与非贪婪:正则表达式默认是贪婪模式,即尽可能多地匹配字符,可以使用
*?
、+?
、??
等非贪婪量词使匹配变为非贪婪模式。
-
-
锚点:
-
^
:匹配输入字符串的开始位置。 -
$
:匹配输入字符串的结束位置。
-
-
分组和捕获:
-
( )
:用于将多个字符组合成一个子表达式,可以对子表达式进行分组和捕获。
-
-
转义字符:
-
\
:用于转义特殊字符,例如\.
表示匹配实际的点号字符。
-
-
预定义字符类:
-
\d
:匹配任意一个数字字符,相当于[0-9]
。 -
\D
:匹配任意一个非数字字符,相当于[^0-9]
。 -
\w
:匹配任意一个字母、数字或下划线字符,相当于[A-Za-z0-9_]
。 -
\W
:匹配任意一个非字母、数字或下划线字符,相当于[^A-Za-z0-9_]
。 -
\s
:匹配任意一个空白字符,包括空格、制表符、换行符等。 -
\S
:匹配任意一个非空白字符。
-
-
选择和排除:
-
|
:用于选择多个表达式中的一个,类似于逻辑的“或”操作。 -
[^]
:在字符类中使用^
表示排除某些字符,例如[^abc]
匹配除了a
、b
和c
之外的任意字符。
-
-
其他元字符和特殊序列:
-
.
:匹配除换行符外的任意一个字符。 -
*
:匹配前面的字符零次或多次。 -
+
:匹配前面的字符一次或多次。 -
?
:匹配前面的字符零次或一次。 -
{n}
:匹配前面的字符恰好 n 次。 -
{n,}
:匹配前面的字符至少 n 次。 -
{n,m}
:匹配前面的字符至少 n 次且不超过 m 次。 -
\b
:匹配单词边界。 -
\B
:匹配非单词边界。
-
四、常用的表达式
- 匹配数字:\d
- 匹配字母:[a-zA-Z]
- 匹配邮箱地址:\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Z|a-z]{2,}\b
- 匹配 URL:(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~|!:,.;]*[-A-Za-z0-9+&@#/%=~|]
- 匹配手机号码:^1[3-9]\d{9}
- 匹配日期:\d{4}-\d{2}-\d{2}
- 匹配 IP 地址:\b(?:[0-9]{1,3}.){3}[0-9]{1,3}\b
- 匹配身份证号:\d{17}[\dXx]