如何掌握JavaScript中的正则表达式基础知识?
创始人
2025-02-13 21:33:08
0
正则表达式是一种用于匹配字符串的模式,它可以用来检查一个字符串是否含有某种子串、将匹配的子串替换或者从某个字符串中取出符合某个条件的子串等。

匹配字符集

| 语法 | 匹配 | 示例 |

|---|---|---|

|. | 匹配任意字符(除了`

如何掌握JavaScript中的正则表达式基础知识?

) | 表达式:.` 匹配任意一个字符 |

|[...] | 匹配字符集(... 表示任意字符) | 表达式:[a-zA-Z] 匹配任意一个小写或大写的字母。
表达式:[iHTC] 匹配 "i", "H", "T" 和 "C"。
表达式:[e-k] 匹配 "e" 到 "k" 之间的字符。|

|\d | 匹配数字 | 表达式:a\d,匹配字符串 "aaa123" 中的a1
表达式: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学习笔记(五)正则表达式-基础知识”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

相关内容

热门资讯

一分钟揭露!衢州都莱辅助器免费... 一分钟揭露!衢州都莱辅助器免费下载(辅助挂)一贯存在有挂,新版2025教程(有挂规律)-哔哩哔哩;1...
第3分钟插件!纳祥游戏科技,约... 第3分钟插件!纳祥游戏科技,约战大同辅助,总是存在有挂(揭秘有挂)-哔哩哔哩1、很好的工具软件,可以...
透视苹果版!hhpoker是内... 透视苹果版!hhpoker是内部控制吗,wpk俱乐部是做什么的,绝活教程(有挂秘笈)-哔哩哔哩1、用...
第9分钟开挂!心悦填大坑辅助器... 第9分钟开挂!心悦填大坑辅助器,情怀打七有挂吗,科技教程-2026最新版本1、金币登录送、破产送、升...
第3分钟详细!陕西三代实战技巧... 第3分钟详细!陕西三代实战技巧(辅助挂)原来有挂,攻略教程(有挂细节)-哔哩哔哩1、实时陕西三代实战...
九分钟教程!八闽状元郎竹间茶馆... 九分钟教程!八闽状元郎竹间茶馆辅助,闲来山水广西辅助,好像有挂(真是有挂)-哔哩哔哩1、八闽状元郎竹...
透视透视挂!aapoker a... 透视透视挂!aapoker ai插件,wepoker私人局有透视吗,指引教程(有挂解密)-哔哩哔哩1...
第9分钟开挂!谁有老友广东辅助... 第9分钟开挂!谁有老友广东辅助器,指尖四川辅助脚本,插件教程-2026最新版本1)谁有老友广东辅助器...
第四分钟揭幕!科乐辅助功能插件... 第四分钟揭幕!科乐辅助功能插件(辅助挂)一直真的有挂,德州教程(有挂方式)-哔哩哔哩1、金币登录送、...
八分钟教程!新道游游戏辅助器免... 八分钟教程!新道游游戏辅助器免费版,衢州都莱辅助器是真的假的,好像真的有挂(竟然有挂)-哔哩哔哩1)...