正则表达式

103 阅读3分钟

正则表达式

正则表达式的作用:字符串的校验 --- 专门用在字符串(正则表达式不区分语言)

正则的创建

一、 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不允许声明重名变量)

三、创建总结:

  1. 字面量创建: /匹配的字符串/
  2. 实例化创建: 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);

正则的内容

正则的语法

一、[]语法 或者(一个区间)

  1. const reg = /[0-9]/;//匹配数字0-9,只要有数字就可以
  2. const reg = /[a-z]/;//匹配小写a-z
  3. const reg = /[A-Z]/;//匹配大写A-Z
  4. const reg = /[0-9a-zA-Z]/;//匹配0-9或a-z或A-Z;
  5. const reg = /[abcdefg]/;//匹配a或b或c或d或e或f或g
  6. 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)/;等价
    注意:空格也是匹配的内容,所以一般正则不写空格

正则的元字符

一、次数的匹配

  1. * 0次或者多次 要么有,要么没有,就是不能有匹配外的其他字符
  2. 0次或者1次 要么没有,要么只出现一次。
  3. + 1次或者多次 要么有一个,要么有多个,反正匹配的字符必须出现
  4. {m,n} m次到n次
  5. {m,} m到无穷次
  6. {m} 只有m次
//a可以有2到5个
/da{2,5}y/

注意,次数匹配符号前面都应该有要匹配的字符,否则就会报错 二、头尾匹配

  1. ^以什么开头
//必须以1开头
/^1/
  1. $以什么结尾
//必须以0结尾
/0$/

注意:^$同时使用时,可以将正则定死
3. .匹配任意字符

正则判空
/^.{0}$/;//匹配任意字符出现0次

正则的问题

正则是一次性检查,不会告知具体出错原因
解决方式:将一个正则分步验证

正则转义字符

转义字符使用反斜杠 \
匹配'':/\//; 匹配'.':/\./;

\d:表示数字
\D:表示非数字
\w:表示数字字母下划线
\W:表示非数字字母下划线
\s:匹配空白字符
\S:匹配非空白字符
注意:空白字符就是空格,空白字符不等于空字符

中文正则

const reg = /[\u4e00-\u9fa5]/; 字符编码的那点事

字符串中能够接受正则的方法

replace(正则,替换);
search(正则);//字符串中的方法,是否包含某个字符,与indexof相同,返回角标 ,但是indexof不能使用正则。
match(正则);找到满足条件的数据,返回的是一个数组
split(正则);将字符串转数组