你还在用split梭哈字符串?赶紧把正则支棱起来!
前端为什么要学正则表达式
很多人觉得正则是后端的事情,但是其实前端很多地方也需要正则来优化,或者简化代码
比如邮箱格式判断,输入密码判断这些,或者前端来更换接口,我们用正则来更换,那就省下了不少力气!
不要再一直用split梭哈了!!!支棱起来,加油,前端人!!!
限定符?
/used?/g
use a used variable name is illegal
?表示前面的字符出现0次或者1次,也就是d可有可无
限定符*
/ab*c/g
ac
abc
abbbbbc
adc
addddc
匹配0个或多个字符
限定符+
/ab+c/g
ac
abc
abbbbbc
adc
addddc
匹配出现1次以上的字符
限定符{}
/ab{5}c/g
ac
abc
abbbbbc
adc
addddc
/ab{2,}c/g
ac
abc
abbbc
abbbbbc
adc
addddc
限制出现的次数
如何让限定符作用于多个字符?
/(ab)+c/g
ac
abc
ababc
abbbc
abbbbbc
adc
addddc
使用()将字符括起来即可!
‘或’运算
/a (cat|dog)/
a cat
a dog
a bird
字符类
用[]括起来,里面为指定的范围
- a-z所有的小写字母
- A-Z所有的大写字母
- 0-9所有的数字
/[^0-9]+/g
abc
tiger
aabbcc
dog
12345678
abc123456
ABCDRFG
如果在方括号的前面写一个 ^(脱字符)则 代表要求匹配除后面范围以外的字符
元字符
正则表达式中的大多数元字符都以反斜杠开头
字符 | 含义 |
---|---|
\d | 数字字符 |
\w | 单词字符 |
\s | 空白符(包含Tab和换行符) |
\D | 非数字字符 |
\W | 非单词字符 |
\S | 非空白字符 |
. | 任意字符 |
^ | 匹配行首 |
$ | 匹配行尾 |
贪婪与懒惰匹配
加?变成懒惰匹配
实例1 RGB 颜色值匹配
\b代表单词的边界
/#[a-fA-F0-9]{6}\b/g
组成部分为a-f A-F 0-9,长度为6
实例2 IPv4 地址匹配
/\d+\.\d+\.\d+\.\d+/g
控制每一位的长度
25[0-5]|2[0-4]\d|[01]\d\d]
结果
\b(25[0-5]|2[0-4]\d|[01]?\d\d?\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)\b