一、正则语法
正则表达式两种写法:
First
const reg = new RegExp(/^\d/, 'g')
second
const reg = /^\d/g
正则语法:
+
加号表示要匹配的字符至少出现一次,也可以出现n次
const reg = /c+/g
// 表示匹配c字符出现1到n次,只要有字符串中有c就可以匹配到
?
问号表示要匹配的字符可有可无
const reg = /c?/g
// 表示最多匹配字符c可有可无,都会返回true
*
星号表示要匹配的字符可以没有,也可以出现1次,也可以出现n次
const reg = /c*/g
// 表示要匹配的字符c可以没有,可以出现一次,也可以出现n次
{n}
大括号里写入一个任意整数,表示要匹配的字符至少出现任意整数次
const reg = /c{2}/g
// 表示要匹配的字符c可以至少匹配2~n个c
{n,}
大括号里写入一个任意整数,然后逗号后面没写任何东西,表示要匹配的字符至少出现任意整数次数到无限次数
const reg = /c{3,}/g
// 表示要匹配的字符c可以至少匹配3~n个c
{n,m}
大括号里写入了两个任意整数,表示要匹配的字符至少出现n次,最多出现m次
const reg = /c{3,5}/g
// 表示要匹配的字符c可以至少匹配3个c,最多匹配5个c
\
斜杠是转义符,是用来匹配字符串中的特殊符号的,匹配特殊符号需要加斜杠
\$ // 匹配$
\. // 匹配.
\! // 匹配!
\{ // 匹配{
()
小括号里面写的正则都是正则的子表达式,也是一个一个独立的正则匹配表达式,可以根据不同的子表达式将一个字符串里符合条件的内容都匹配出来,返回到一个数组里保存
// 注意这里千万不要用全局匹配,否则只能匹配个完整的url回来,只有不全局匹配才会返回单个组件部分
const reg = /(\w+):\/\/(\w+\.\w+\.\w+)/
cosnt url = 'http://www.baidu.com'
console.log(url.match(reg))
// 打印结果
["http://www.baidu.com", "http", "www.baidu.com", index: 0, input: "http://www.baidu.com", groups: undefined]
之所以回这样,按照个人理解,是这个正则表达式第一步是整个正则匹配返回http://www.baidu.com
,然后以这个匹配结果再去依次调用整个正则里面的子表达式匹配,返回各个子表达式匹配的结果
[]
中括号,可以在里面写入任意的字母,数字等字符集合,表示只匹配写入的这些字符,没有的则不匹配,可以在括号里写入^
符号,注意在外面这个符号是匹配以什么开端的,但是在中括号里面表示取反,表示只匹配写入字符以外的字符,不匹配写入的字符
const reg = [abc]
// 表示只匹配字符串中的a,b,c这三个字符
const reg = [^abc]
// 表示匹配字符串中除了a,b,c这三个字符以外的所有的字符
[n-m]
范围匹配,表示只匹配n-m这个范围内容的字符,也可以通过取反
const reg = [a-z]
// 表示只匹配a~z之间的任意小写字母
const reg = [^a-z]
// 表示只匹配除了a~z之间任意字符以外的所有字符
|
表示只要满足竖线两边任意一个字符,即可匹配
const reg = /(jp|jpe)g/
// 表示无论是jpg还是jpeg,都可以满足匹配条件
g
表示全局匹配
i
表示不区分大小写
\d
匹配0~9之间任意数字字符
\D
匹配除了0~9之间任意数字字符以外的所有字符
\s
匹配任何空白字符,包括空格,制表符,换行符,换页符
\S
匹配所有字符,除了空白字符
\w
匹配数字,字母,下划线。===[A-Za-z0-9_]
\W
匹配非数字,字母,下划线。
\t
匹配制表符
\f
匹配换页符
\n
匹配换行符
\r
匹配回车符
\b
匹配空格前面要匹配的字符
\B
匹配非空格前面要匹配的字符