匹配字符集
| 语法 | 匹配 | 示例 |
|---|---|---|
|.
| 匹配任意字符(除了`
) | 表达式:
.` 匹配任意一个字符 |
|[...]
| 匹配字符集(...
表示任意字符) | 表达式:[a-zA-Z]
匹配任意一个小写或大写的字母。<br>表达式:[iHTC]
匹配 "i", "H", "T" 和 "C"。<br>表达式:[e-k]
匹配 "e" 到 "k" 之间的字符。|
|\d
| 匹配数字 | 表达式:a\d
,匹配字符串 "aaa123" 中的a1 。<br>表达式:a.\d
,匹配字符串 "aaa123" 中的aa1 。|
|\D
| 匹配非数字 | 表达式:a.\D
,匹配字符串 "aaa123" 中的aaa 。|
|\s
| 匹配空白字符(包括空格、制表符、换页符等空白字符,`[ \t
\r\f]) | 表达式:
a.\s,匹配字符串 "aaa 123" 中的
aa `(最后是空格) 。|
|\S
| 匹配非空白字符 | 表达式:a.\S
,匹配字符串 "aaa 123" 中的aaa 。|
|\w
| 匹配单词字符([a-zA-Z0-9_]和汉字) | 表达式:a.\w
,匹配字符串 "aaa 123" 中的aaa 。|
|\W
| 匹配非单词字符 | 表达式:a.\W
,匹配字符串 "aaa 123" 中的aa
(最后是空格) 。|
|\
| 转义字符 |\r
, `
代表回车和换行符;
\t 制表符;
\\ 代表 "\" 本身;
\^ 匹配 ^ 符号本身;
\$ 匹配 $ 符号本身;
\.` 匹配小数点(.)本身。 |
匹配量词(Quantifier)
语法 | 匹配 | 示例 |
| 匹配表达式出现 0次或者无限次,相当于 {0,} | 表达式:a ,匹配字符串 "aaa123" 中的aaa 。 |
+ | 匹配表达式至少出现 1次或者无限次,相当于 {1,} | 表达式:a+ ,匹配字符串 "aaa123" 中的aaa 。 |
? | 匹配表达式 0次或者 1次,相当于 {0,1} | 表达式:a? ,匹配字符串 "aaa123" 中的a 。 |
{m,n} | 匹配表达式至少重复 m 次,最多重复 n 次 | 表达式:a{1,2} ,匹配字符串 "aaa123" 中的aa 。 |
{m} | 匹配表达式重复 m 次 | 表达式:a{3} ,匹配字符串 "aaa123" 中的aaa 。 |
{m,} | 匹配表达式至少重复 m 次 | 表达式:a{1,} ,匹配字符串 "aaa123" 中的aaa 。 |
*? | 匹配模式变为非贪婪(尽可能少匹配字符),匹配表达式可以为 0次,也可以是无限次 | 表达式:a[0-9]*?23' ,匹配字符串 "aaa123" 中的a123 。如果匹配字符串 "aaa23" 则为a23 。 如果匹配字符串 "aaa456123" 则为a456123 。 |
+? | 匹配模式变为非贪婪(尽可能少匹配字符),匹配表达式至少 1次,也可以是无限次 | 表达式:a[0-9]+?23 ,匹配字符串 "aaa123" 中的a123 。如果匹配字符串 "aaa23" 则匹配失败 。 如果匹配字符串 "aaa456123" 则为a456123 。 |
?? | 匹配模式变为非贪婪(尽可能少匹配字符),匹配表达式最多 1次,也可以是 0次 | 表达式:a[0-9]??23 ,匹配字符串 "aaa123" 中的a123 。如果匹配字符串 "aaa23" 则为a23 。 如果匹配字符串 "aaa456123" 则匹配失败。 |
{m,n}? | 非贪婪模式,匹配符合的最短的字符串 | 表达式:a[0-9]{1,4}?23 ,匹配字符串 "aaa123" 中的a123 。如果匹配字符串 "aaa23" 则匹配失败 。 如果匹配字符串 "aaa456123" 则为a456123 |
匹配边界
语法 | 匹配 | 示例 |
^ | 匹配字符串开头 | 表达式:^\d 表示必须以数字开头。表达式: [^abc] 匹配a ,b ,c 之外的任意一个字符。 |
$ | 匹配字符串结尾 | 表达式:*.com$ 匹配 .com 结尾的字符串。\d$ 表示必须以数字结束。 |
\A | 指定的字符串匹必须出现在开头 | 表达式:\Aa ,匹配字符串 "aaa123" 中的a 。 |
\Z | 指定的字符串匹必须出现在结尾,如果是存在换行,只匹配到换行前的结束字符串。 | 表达式:\d\Z ,匹配字符串 "aaa123" 中的3 。 |
\b | 匹配一个单词边界,但只在单词开始或结尾的位置,即匹配\w 和\W 之间。(本身不匹配任何字符) | 表达式:\b4 ,匹配字符串 "aaa123 456" 中的4 。表达式: \b5 ,匹配字符串 "aaa123 456" 则为失败。 |
\B | 匹配非单词边界,但不能在词的开头或者结尾,即匹配[^\b] 。(本身不匹配任何字符) | 表达式:\B4 ,匹配字符串 "aaa123 456" 则为失败。表达式: \B5 ,匹配字符串 "aaa123 456" 中的5 。 |
匹配条件分组
语法 | 匹配 | 示例 |
⎮ | 或关系,匹配左右任意一个表达式 | 表达式:a⎮b ,匹配字符串 "aaa123" 中的a 。 |
(ab) | 括号中表达式作为一个分组 | 表达式:(ab) ,匹配字符串 "aaa123" 中的ab。 |
相关问题与解答栏目
问题1: 如果我想验证一个字符串是否以数字开头,应该如何编写正则表达式?
答:可以使用^\d
这个正则表达式来验证一个字符串是否以数字开头,这里的^
表示字符串的开始,而\d
表示任意数字,这个正则表达式会匹配任何以数字开头的字符串,对于字符串 "123abc",它会成功匹配;但对于字符串 "abc123",它不会匹配。
问题2: 如果我想从一段文本中提取所有的邮箱地址,我应该使用什么正则表达式?
答:你可以使用以下正则表达式来匹配大多数常见的邮箱地址格式:\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b
,这个正则表达式包含了几个部分:
\b[A-Za-z0-9._%+-]+
:匹配邮箱地址的用户部分,可以包含字母、数字、点、下划线、百分号、加号和减号。
@
:匹配 @ 符号。
[A-Za-z0-9.-]+
:匹配域名的主体部分和顶级域的初始部分,可以包含字母、数字、点和连字符。
\.[A-Z|a-z]{2,}
:匹配顶级域后缀,如 .com、.org 等,必须以点开始,后面跟着两个或更多的字母。
\b
:确保邮箱地址的边界不被包含在其他单词中。
这个正则表达式能够捕获大多数标准格式的邮箱地址,但请注意,由于邮箱地址的复杂性和多样性,可能无法捕获所有有效的邮箱地址。
小伙伴们,上文介绍了“javascript学习笔记(五)正则表达式-基础知识”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。