一、正则
是一种用来描述、匹配和操作字符串的工具。它由一系列字符组成的模式构成,可以用来检索、替换、提取或验证文本数据。
二、正则表达式
由普通字符和特殊字符组成,通过定义匹配规则来实现对字符串的处理
三、正则表达式的基本语法规范
-
字符匹配:
-
普通字符:正则表达式中的普通字符(例如字母、数字、标点符号等)表示需要精确匹配该字符。
-
特殊字符:正则表达式中的一些特殊字符具有特殊的含义,如元字符(
^ $ . * + ? ( ) [ ] { } | \) 和转义字符(\)。 -
字符类:使用方括号
[ ]表示一个字符类,可以指定多个可选字符,例如[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]