正则表达式详细讲解
目录
一、正则表达式概念
二、八元素
1、普通字符:
2、元字符:
3、通配符 .:
4、字符类 []:
5、量词:
6、锚点 ^ 和 $:
7、捕获组 ():
8、转义字符 \:
三、日常使用的正则表达式
1、邮箱
2、电话(美国)
3、URL
4、日期(YYYY-MM-DD)
5、IP地址
6、用户名(仅包含字母和数字,且长度为6-12字符)
7、密码(包含大小写字母、数字、特殊字符,且长度为8-16个字符)
总结
我的其他博客
一、正则表达式概念
正则表达式(Regular Expression,简称Regex或RegExp)是一种用于描述字符串模式的表达式。它提供了一种灵活的方式来进行字符串的匹配、搜索、替换和提取操作。正则表达式是由普通字符和元字符(metacharacters)组成的字符串,这些元字符具有特殊的意义,用于定义匹配规则。
以下是正则表达式的一些基本概念和元素:
-
普通字符: 表达式中的普通字符(例如字母、数字、符号)表示它们自身,只有它们自身与输入字符串中的字符匹配。
-
元字符: 元字符是具有特殊含义的字符,它们用于构建匹配模式。例如,
*
、+
、.
、^
、$
等都是元字符。 -
通配符:
.
(点)是一个通配符,匹配任意单个字符,除了换行符。 -
字符类: 方括号
[]
用于定义一个字符类,匹配其中任意一个字符。例如,[aeiou]
可以匹配任何一个元音字母。 -
量词: 量词用于指定匹配模式中字符的数量。例如,
*
表示零个或多个,+
表示一个或多个,?
表示零个或一个。 -
锚点:
^
(脱字符)用于匹配字符串的开头,$
用于匹配字符串的结尾。 -
捕获组: 使用圆括号
()
可以创建捕获组,用于分组并记住匹配的子表达式。捕获组允许你提取匹配的部分。 -
转义字符: 反斜杠
\
用于转义元字符,使其失去特殊含义,匹配字符本身。例如,\.
匹配实际的点字符。
正则表达式的语法因编程语言而异,但基本的概念和元素在大多数语言中是相似的。许多编程语言(如Python、JavaScript、Java)都提供了内置的正则表达式支持。正则表达式是一个强大而灵活的工具,但有时也可能变得复杂,特别是对于复杂的匹配模式。
二、八元素
1、普通字符:
普通字符是正则表达式中的字母、数字、符号等,它们表示它们自身。例如,正则表达式中的 a
将精确匹配字符串中的字母 "a"。
2、元字符:
元字符是具有特殊含义的字符,用于构建匹配模式。一些常见的元字符包括:
.
:匹配任意单个字符(除了换行符)。*
:匹配前一个字符的零个或多个实例。+
:匹配前一个字符的一个或多个实例。?
:匹配前一个字符的零个或一个实例。^
:匹配字符串的开始。$
:匹配字符串的结束。[]
:定义字符类,匹配其中任意一个字符。()
:创建捕获组。
3、通配符 .
:
点号 .
是一个通配符,用于匹配任意单个字符,除了换行符。例如,正则表达式 a.c
可以匹配 "abc"、"adc"、"a1c" 等。
4、字符类 []
:
字符类用于定义一个字符集合,匹配其中的任意一个字符。例如,正则表达式 [aeiou]
匹配任何一个元音字母。
5、量词:
- 量词用于指定字符或字符类的重复次数。
*
:匹配前一个字符的零个或多个实例。+
:匹配前一个字符的一个或多个实例。?
:匹配前一个字符的零个或一个实例。
- 例如,正则表达式
\d+
可以匹配一个或多个数字。
6、锚点 ^
和 $
:
^
用于匹配字符串的开始,$
用于匹配字符串的结束。例如,正则表达式 ^start
可以匹配以 "start" 开始的字符串。
7、捕获组 ()
:
捕获组用于创建子表达式,可以对其进行分组,以便后续引用或提取。例如,正则表达式 (\d+)-(\w+)
可以匹配像 "123-abc" 这样的字符串,并将数字和字母分别放入两个捕获组中。
8、转义字符 \
:
反斜杠 \
用于转义元字符,使其失去特殊含义,匹配字符本身。例如,\.
可以匹配实际的点字符。
三、日常使用的正则表达式
1、邮箱
- 正则表达式:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
- 用途:用于验证电子邮件地址的格式。
2、电话(美国)
- 正则表达式:
^\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$
- 用途:用于验证美国的电话号码格式,包括可选的括号、分隔符。
3、URL
- 正则表达式:
^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$
- 用途:用于验证URL的格式。
4、日期(YYYY-MM-DD)
- 正则表达式:
^\d{4}-\d{2}-\d{2}$
- 用途:用于验证日期的格式,例如:2023-12-07。
5、IP地址
- 正则表达式:
^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
- 用途:用于验证IPv4地址的格式。
6、用户名(仅包含字母和数字,且长度为6-12字符)
- 正则表达式:
^[a-zA-Z0-9]{6,12}$
- 用途:用于验证用户名的格式,只包含字母和数字,长度为6到12个字符。
7、密码(包含大小写字母、数字、特殊字符,且长度为8-16个字符)
- 正则表达式:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,16}$
- 用途:用于验证密码的格式,包含大小写字母、数字和特殊字符,长度为8到16个字符。
总结
正则表达式是一项强大而灵活的技能,它在许多编程语言和文本编辑器中都有广泛的应用。熟练地使用正则表达式可以大大提高文本处理和字符串操作的效率
我的其他博客
HTTP与HTTTPS的区别-CSDN博客
什么情况下会产生StackOverflowError(栈溢出)和OutOfMemoryError(堆溢出)怎么排查-CSDN博客
谈谈我对HashMap扩容机制的理解及底层实现-CSDN博客