正则表达式
介绍
正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript 中,正则表达式也是对象。这些模式被用于 RegExp
的 exec
和 test
方法,以及 String
的 match
、matchAll
、replace
、search
和 split
方法。
而正则表达式的用途也十分广泛,比如哔哩哔哩的弹幕屏蔽
,输入密码时的密码复杂度判断
,都是我们日常生活中经常遇见的,可谓是用处极大
正则表达式的在线测试网站
:https://regex101.com/
语法
限定符
?
?
代表前面的字母需要出现0次或者1次
,也就是前面的字符可有可无
*
*
代表前面的字母可以没有,也可以出现多次
+
+
会匹配出现一次及其以上
的字母
如果这时候我们想要更精确的匹配,比如要指定前面字母出现的次数
,我们可以使用{}
。例如在{}中填写上6,则意味着匹配前面的字母出现六次的字符
如果我们希望字符出现的次数在2-6之间,我们可以使用{2,6}
,如果我们希望出现的字符出现在两次以上
,则省略后面的数字即可{2,}
,但注意别忘了中间的逗号
匹配多个字符的重复
()
这时候我们可以选择将想要匹配的多个字符用括号括起来,比如我们想要匹配多次的ab,则可以写成(ab)+
,这样就会匹配ab这两个字符的重复情况了
或运算
当我们想要匹配字符 a cat
或者a dog
,就可以将正则表达式写成a (cat|dog)
,这时候会先去匹配a空格
,然后再去匹配cat和dog 这时候中间的竖线是必不可少的,要注意要用括号包住,不然就是比配的a cat和dog
字符类
当我们想要找寻由abc
三个字母构成
的单词,我们可以写成[abc]+
,方括号里面的字符要求里面的内容只能取自于这三个字母
同时这里可以指定范围 使用-
就可以指定范围
,例如[a-z]+
就是匹配a-z的所有小写字母组成的单词
如果要匹配除去它以外的所有字符
,可以在前面加上一个^
,比如[^0-9]+
就是匹配除了数字以外的所有内容(包括换行符)
元字符
正则表达式的大多数元字符都是以\
开头
\d
代表数字字符\w
代表单词字符,也就是所有的英文 数字以及下划线\s
代表空白符,包含了tab和换行符\D
和小写相对,就是代表所有的非数字字符\W
代表所有的非单词字符\S
代表所有的非空白字符.
代表任意字符但不包含换行符^
只会匹配行首$
只会匹配行尾
贪婪和懒惰匹配
默认情况下,正则表达式的.
是使用的贪婪匹配,尽可能的多去匹配,我们只需要在匹配的限定次数(比如+
就是匹配一次及其以上)后面
加上一个?
即可,这时候将会从贪婪匹配
切换到懒惰匹配