高级概念
捕获匹配
获取引用 (x)
- RegExp.$number
/a(bc)/g.exec('abc')
RegExp.$1 // bc
/a(bcd)/g.test('abcd')
RegExp.$1 // bcd
- replace $number
'<div class="123">'.replace(/(<div)[\s\S]*(>)/, '$1$2') // <div>
非捕获匹配 (?:x)
用途
- 使表达式作用于整个元素
/(?:abc){2}/.test('abc') // false
/(?:abc){2}/.test('abcabc') // true
- 提升性能
- 捕获是消耗性能的 如果不需要记住匹配项 只想单纯括起来 不要用捕获
先行断言 x(?=y)
/\S+(?=ing)/.test('running') // true
/\S+(?=ing)/.test('runn ing') // false
后行断言 (?<=y)x
/(?<=is)\S+/.test('isLoading') // true
/(?<=is)\S+/.test('is Loading') // false
正向否定查找 x(?!y)
/runn(?!ing)/.test('running') // false
/runn(?!ing)/.test('runn ing') // true
反向否定查找 (?<!y)x
/(?<!is)Loaded/.test('isLoaded') // false
/(?<!is)Loaded/.test('is Loaded') // true
这些等等
- 正向肯定零宽断言
- 正向否定零宽断言
- 零宽断言
- 零宽断言的意思是(匹配宽度为零,满足一定的条件/断言
- 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西
网友评论