正则表达式是一种描述文本模式的规则集合。通过使用特定的语法和规则,正则表达式可以匹配文本中的特定字符组合。它广泛应用于各种编程语言和工具中,如 JavaScript、Python、Perl、Java 以及文本编辑器等。
正则表达式的概念起源于20世纪50年代,由美国数学家斯蒂芬·科尔·克莱尼(Stephen Cole Kleene)提出,用于描述正则语言(regular language)。1968年,Ken Thompson 在实现早期 Unix 的搜索工具 ed
时引入了正则表达式,这一技术逐渐被广泛应用于计算机科学和软件开发中。
正则表达式由普通字符(例如字母和数字)和特殊字符(也称为元字符)组成。元字符具有特殊的含义,用于构建复杂的模式。以下是一些常见的元字符:
.
:匹配任意一个字符(除换行符外)^
:匹配行的开头$
:匹配行的结尾*
:匹配前一个字符零次或多次+
:匹配前一个字符一次或多次?
:匹配前一个字符零次或一次[]
:匹配字符集中的任意一个字符|
:表示“或”操作()
:用于分组,匹配括号内的模式\
:转义字符,用于匹配元字符本身匹配单个字符:
a
a
。匹配字符集:
[abc]
a
、b
或 c
中的任意一个字符。匹配范围:
[a-z]
a
到 z
的任意一个小写字母。匹配零次或多次:
a*
a
,即可以匹配空字符串、a
、aa
等。匹配一次或多次:
a+
a
,即可以匹配 a
、aa
等,但不匹配空字符串。匹配零次或一次:
a?
a
,即可以匹配空字符串或 a
。匹配行的开头:
^a
a
开头的行。匹配行的结尾:
a$
a
结尾的行。分组:
(abc)
abc
,并将其作为一个组。“或”操作:
a|b
a
或 b
中的任意一个字符。电子邮件地址验证:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
电话号码验证:
^\d{3}-\d{3}-\d{4}$
123-456-7890
的电话号码。URL 验证:
^(https?|ftp)://[^\s/$.?#].[^\s]*$
http
、https
或 ftp
开头的 URL。