正则表达式(regular expression)

定义: 规定字符串汇总,字符出现的规律。
何时: 1.用规则模糊查找多种关键词 2.验证字符串格式

1.最简单的规则,是关键词的原文

var a='今天又是阴天啊!';
var b=a.search(/阴天/); /阴天/为正则
console.log(b); //4

2.字符集

定义: 规定1位字符,备选字符列表的集合
何时: 只要字符串中有1位字符,有多重备选
如何使用:【备选字符列表】
注意:

  1. 不是数组,不加逗号。
  2. 无论备选字符列表有多少个字,一个字符集只能匹配1位字符!
  3. 当备选字符列表部分连续时,可以省略中间的字符。

常见:

  • 一位数字 [0-9]
  • 一位大小写字母 [a-z]
  • 一位大写字母 [A-Z]
  • 一位字母 [A-Za-z]
  • 一位字母或数字 [0-9A-Za-z]
  • 一个汉字 [\u4e00-\u9fa5]
var a='123abZ';
var b=a.replace(/[0-9]/,'数字');
console.log(b);//数字23abZ

3.预定义字符集:4个

  1. \d 一位数字[0-9]
  2. \w 一位字母,数字或下划线 [0-9A-Za-z_]
  3. \s 一个空字符: 空格 换行 Tab
  4. . 除换行外的任意字符

注:仅适用字符集,无法灵活定义字符的个数

var a='123abZ';
var b=a.replace(/\d/,'数字');
console.log(b); //数字23abZ

4.量词

定义: 专门规定一个字符集出现次数的规则;
何时: 只要固定一个字符集出现的次数,就用量词!
如何: 字符集量词
分类:

  1. 有明确数量限制:
    字符集{m,n} 至少m,最多n
    字符集{m,} 至少m,多了不限制
    字符集{m} 必须m个,不能多也不能少
  2. 没有明确数量限制:
    字符集? 可有可无,最多1个
    字符集* 可有可无,数量不限
    字符集+ 至少一个,多了不限

5.选择和分组

选择: 或 在多个规则中,匹配任意一个即可!
或: |
分组:( )
为什么: 量词,默认只修饰相邻的前一个字符集
何时: 如果希望量词修饰多个字符集时,就用分组
如何: (多个字符集)

6. 匹配特殊位置

何时: 只要匹配字符串特殊位置上的关键词时
包括: 开头^,结尾 $
比如:

  • ^\s+ 开头的空字符
  • \s+$ 结尾的空字符
  • ^\s+|\s+$ 开头的和结尾的空字符
    单词边界 \b: 包括 空格,标点…

何时: 只要匹配一个专门的单词时

7.RegExp

专门封装一条正则表达式,并使用正则表达式,执行验证和查找功能的对象

7.1 创建

var reg=/ 正则/ig  //只要正则表达式是固定不变的
var reg=new RegExp("正则","ig")  //如果正则表达式需要动态生成!

7.2 验证

**定义:**验证一个字符串的格式,是否符合正则表达式的要求
问题: 默认,正则表达式只要部分匹配,就返回true
解决: 只要验证,必须前加^,后加$,要求,从头到尾完整匹配

var a='今天是阴天,明天是晴天吗?'
var reg=/阴天/;
var bool=reg.test(a);
console.log(bool) //true

var d=1;
var c=d===1?'阴天':'晴天';
var e=new RegExp(c,'ig');
var boo12=e.test(a);
console.log( boo12) //true  

7.3 查找

即找到每个关键词的内容,又找到每个关键词的位置
返回值:数组{0:”关键词内容”,index:本次找到关键词的位置};如果找不到,返回null
原理

  1. 将本次找到的关键词,放入arr中0位置
  2. 将本次关键词的位置,放入arr中index位置将本次关键词的位置,放入arr中index位置
  3. 自动修改reg的lastIndex属性为当前位置+关键词长度自动修改reg的lastIndex属性为当前位置+关键词长度
var a='今天是阴天,明天是晴天吗?'
var reg=/阴天/;
var d=1;
var c=d===1?'阴天':'晴天';
var e=new RegExp(c,'ig');
var boo12=e.exec(a); 
console.log( boo12)//[0:'阴天',index:3]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值