js学习随笔之RegExp(正则表达式)

正则表达式符号

这里写图片描述
这里写图片描述
这里写图片描述

RegExp类型

ECMAScript通过RegExp类型来支持正则表达式。

语法

var expression = / pattern / flags;

pattern (模式)部分 可以是任何简单或者复杂的表达式

1.pattern可以包含 字符、限定符、分组、向前查找 以及反向引用
2.每个表达式都可带有一个或多个标志(flags)
正则表达式匹配模式支持3个标志
____1. g(global):全局模式,应用于所有字符串,非发现第一个匹配项停止;
____2. i(case-insensitive):不区分大小写模式,匹配项时忽略字符串的大小写;
____3. m(multiline):多行模式,到达一行末尾,还会继续查找下一行中是否存在与模式匹配的项;

//匹配字符串所有"at"的实例
var pattern1=/at/g;
//匹配第一个"bat""cat",不区分大小写
var pattern2=/[bc]at/i;
//匹配所有以"at结尾的三个字符组合",不区分大小写
var pattern3=/.at/gi;

模式中使用所有的元字符必须转义

元字符包括:([{\^$|)?*+.]}


如果想在匹配字符串中包含这些字符,需要给 元字符进行转义

//匹配第一个bat或cat 不区分大小写
var pattern1 =/[bc]at/i;

var pattern2 =/\[bc]at/i;
var at="/\at";
console.log(pattern1.test(at));//true


var pattern3 = /\/.at/gi;
console.log(pattern3.test("/\bat"));//true

var pattern4 = /\/\.at/gi;
console.log(pattern4.test("/\/\.at"));//true

另一种创建正则表达式的方式

RegExp构造函数

参数:
要匹配的字符串模式、标志字符串(可选)

var pattern2 = new RegExp("[bc]at","i");

RegExp实例属性

global:布尔值,表示是否设置了g标志。
ignoreCase:布尔值,表示是否设置了i标志。
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
multiline:布尔值,表示是否设置了m标志。
source:正则表达式的字符串表示,按照字面量的形式而非传入构造函数中的字符串模式返回。

var pattern1 = /\[bc\]at/i;
console.log(pattern1.global);//false
console.log(pattern1.ignoreCase);//true
console.log(pattern1.multiline);//false
console.log(pattern1.lastIndex);//0
console.log(pattern1.source);//\[bc\]at

RegExp对象之exec()函数

参数:传入的字符串
返回:匹配项数组 Array
没有匹配项的时候返回null
返回的数组包含额外的属性:index 、input 位置和文本

  var text = "mom and dad and bady";
  var pattern = /mom( and dad( and bady)?)?/gi;
  var matches = pattern.exec(text);
  console.log(matches.index); //0
  console.log(matches.input); //"mom and dad and bady"
  console.log(matches[0]); //"mom and dad and bady"
  console.log(matches[1]); //"and dad and bady"
  console.log(matches[2]); //"and bady"

IE的lastIndex属性偏差非全局也会变化
其他的如果非要用lastIndex 设置全局


RegExp对象之test()函数

接收参数:字符串
返回参数:匹配true 、不匹配false

  var pattern = /mom( and dad( and bady)?)?/gi;
  console.log(pattern.test("mom and dad and bady")); //true

局限性

这里写图片描述


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值