js中的正则表达式

MDN原文
ECMAScript通过RegExp来支持正则表达式

	// pattern部分可以是简单或者复杂的正则表达式,可以包含字符串,限定符,分组,向前查询以及反向引用
	// flag用以标明正则表达式的行为
	var expression = / pattern / flag;
flag含义
g表明全局模式,这样pattern不会在发现第一个匹配项的时候自己停止
i表明不区分大小写
m表示多行,即在到达一行文本的末尾时还会继续查找下一行中是否存在匹配项

==字符\在字符串中通常被转义为 \\,因此在正则表达式中会变成\\\\==

var pattern1 = /\.at/g;
var pattern2 = new RegExp('\\.at', 'g')
//pattern1是完全等价的正则表达式

使用正则表达式和使用RegExp构造函数创建的正则表达式不一样,在ECMAScript3中,正则表达式字面量始终会共享同一个RegExp示例,而使用RegExp构造函数创建的每一个新RegExp都是一个新实例

在ECMAScript5中已修正,字面量形式的正则都是一个独立的实例

let pattern1;
for (var i = 0; i < 10; i++) {
  pattern1 = /cat/g
  pattern1.test('catasfwe')
}

let pattern2;
for (var i = 0; i < 10; i++) {
  pattern2 = new RegExp('cat', 'g')
  pattern2.test('catasfwe')
}

regexp实例属性

  • global: 是否设置了g标记,boolean
  • ingoreCase: 是否设置了i标记,boolean
  • lastIndex: 在源字符串中下一次开始搜索的位置,number
  • multiline: 是否设置了m标记,boolean
  • source: 正则表达式的字面量字符串,不包含开头,结尾的斜杆

regexp实例方法

  • exec()
    exec重要配合捕获组使用,只传入一个参数,就是要匹配的字符串,如果匹配到了,就返回第一个匹配信息的数组,没有匹配到就返回null。虽然返回的是一个数组,但是包含两个属性(index,input)。index表示字符串中匹配模式的起始位置,input表示输入的字符串
let str = 'mom and dad and baby';
let reg = /mom (and dad (and baby)?)?/gi;
let result = reg.exec(str)
console.log(result.index); // 0
console.log(result.input); // mom and dad and baby
console.log(result[0]); // mom and dad and baby
console.log(result[1]); // and dad and baby
console.log(result[2]); // and baby
  • test()
    test只返回一个boolean,表示是否匹配到了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值