正则表达式
示例使用
匹配两个字符之间的内容
js
//比如字符串为 `[pre]法法撒旦发[/pre]`
//`(?<=\[pre\]).*?(?=\[/pre\])` 这个结果就是`法法撒旦发`
c = "[pre]123[/pre]456[pre]789[/pre][pre][/pre]"
c.match(/(?<=\[pre\]).*?(?=\[\/pre\])/g)
//['123', '789', '']
大小字母、数字、特殊字符, 至少8位
js
const reg = new RegExp('^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,20}$')
符号介绍
()
捕获分组
()
会把每个分组匹配的值保存起来。
js
const reg = new RegExp(/([0-9]*)([a-z]*)([0-9]*)/i)
const str = '123abc456ww'
const result = str.match(reg)
//result: [
'123abc456',
'123',
'abc',
'456',
index: 0,
input: '123abc456ww',
groups: undefined
]
(?:)
非捕获分组
const reg = new RegExp(/(?:[0-9]*)([a-z]*)([0-9]*)/i)
const str = '123abc456ww'
const result = str.match(reg)
//result: [
'123abc456',
'abc',
'456',
index: 0,
input: '123abc456ww',
groups: undefined
]
(?=pattern)
正向肯定预查
捕获以pattern结尾的内容。非获取匹配。
js
const reg = new RegExp(/windows(?=95|98)/i)
const str = 'windows95'
const result = str.match(reg)
// result: [ 'windows', index: 0, input: 'windows95', groups: undefined ]
(?!pattern)
正向否定预查
捕获不以pattern结尾的内容,非获取匹配。
(?<=pattern)
反向肯定预查
反向肯定预查,与正向肯定预查类似,只是方向相反。以(?<=pattern)xxx为例,就是捕获以pattern开头的内容xxx。