正则表达式
正则表达式的作用:字符串的校验 --- 专门用在字符串(正则表达式不区分语言)
正则的创建
一、 const reg = //;
字符串:const str = '';
数组:const arr = [];
对象:const obj = {};
判断字符串中是否含有good const reg = /good/;//good没有引号
二、const reg = new RegExp();//实例化创建\
判断字符串中是否含有good
const reg = new RegExp('good');//good作为参数需要加上引号,否则就是变量
(注意:同一块级作用域下const不允许声明重名变量)
三、创建总结:
- 字面量创建: /匹配的字符串/
- 实例化创建: new RegExp('匹配的字符串')
正则修饰符
i ignore 忽略大小写
g global 全局的\
const str = 'Hi tmd you TMD'
//字符串替换方法默认只会替换第一个
str.replace('tmd','**');
//字符串替换可以接受正则表达式
str.replace(/tmd/ig,'**');
//构造函数的第一个参数表示匹配字符,第二个参数表示正则修饰符
const reg = new RegExp('tmd','ig');
str.replace(reg,'**');
正则的方法
一、test正则的测试,测试字符串中是否有匹配的内容。返回布尔值(这个方法不需要全局匹配)
const reg = /good/i;
const str = 'good';
reg.test(str);
二、exec 返回一个数组,数组长度始终为1,并返回匹配到的字符串下标,如果匹配不到就返回null(空数组转布尔值是true)
const reg = /good/i;
const str = 'good';
reg.exec(str);
正则的内容
正则的语法
一、[]语法 或者(一个区间)
- const reg = /[0-9]/;//匹配数字0-9,只要有数字就可以
- const reg = /[a-z]/;//匹配小写a-z
- const reg = /[A-Z]/;//匹配大写A-Z
- const reg = /[0-9a-zA-Z]/;//匹配0-9或a-z或A-Z;
- const reg = /[abcdefg]/;//匹配a或b或c或d或e或f或g
- const reg = /[ab|cde|fg]/;//匹配a或b或|或c或d或e或|或f或g
二、
|语法 或则 const reg2 = /0|1|2|3|4|5|6|7|8|9/;
与const reg2 = /(0|1|2|3|4|5|6|7|8|9)/;等价
注意:空格也是匹配的内容,所以一般正则不写空格
正则的元字符
一、次数的匹配
*0次或者多次 要么有,要么没有,就是不能有匹配外的其他字符?0次或者1次 要么没有,要么只出现一次。+1次或者多次 要么有一个,要么有多个,反正匹配的字符必须出现{m,n}m次到n次{m,}m到无穷次{m}只有m次
//a可以有2到5个
/da{2,5}y/
注意,次数匹配符号前面都应该有要匹配的字符,否则就会报错 二、头尾匹配
^以什么开头
//必须以1开头
/^1/
$以什么结尾
//必须以0结尾
/0$/
注意:^$同时使用时,可以将正则定死
3. .匹配任意字符
正则判空
/^.{0}$/;//匹配任意字符出现0次
正则的问题
正则是一次性检查,不会告知具体出错原因
解决方式:将一个正则分步验证
正则转义字符
转义字符使用反斜杠 \
匹配'':/\//;
匹配'.':/\./;
\d:表示数字
\D:表示非数字
\w:表示数字字母下划线
\W:表示非数字字母下划线
\s:匹配空白字符
\S:匹配非空白字符
注意:空白字符就是空格,空白字符不等于空字符
中文正则
const reg = /[\u4e00-\u9fa5]/; 字符编码的那点事
字符串中能够接受正则的方法
replace(正则,替换);
search(正则);//字符串中的方法,是否包含某个字符,与indexof相同,返回角标
,但是indexof不能使用正则。
match(正则);找到满足条件的数据,返回的是一个数组
split(正则);将字符串转数组