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

avatar
作者
筋斗云
阅读量:0
正则表达式是一种用于匹配字符串的模式,它可以用来检查一个字符串是否含有某种子串、将匹配的子串替换或者从某个字符串中取出符合某个条件的子串等。

匹配字符集

| 语法 | 匹配 | 示例 |

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

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

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

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

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

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!