发布于 1 个月前 ,更新于 1 个月前 js

js 正则 ? 匹配使用

正则表达式中的 (?:pattern)(?=pattern)(?!pattern)(?<=pattern)(?<!pattern) ,容易忘记这里做个笔记。

?:pattern

匹配 pattern 但不获取匹配结果

var str = 'aaabbb';
var reg = /(a+)(?:b+)/;
console.log(str.match(reg));
// 输出: ["aaabbb", "aaa", index: 0, input: "aaabbb", groups: undefined]
?=pattern

捕获以 pattern 结尾的内容

var str = "i'm singing and dancing";
var reg = /\b(\w+(?=ing\b))/g;
var res = str.match(reg);
console.log(res);
// 输出: ["sing", "danc"]
?!pattern

捕获不以 pattern 结尾的内容

var str = 'nodejs';
var reg = /node(?!js)/;
console.log(reg.test(str));
// 输出: false
?<=pattern

捕获以 pattern 开头的内容

var str = '111$222';
var reg = /(?<=\$)\d+/;
console.log(str.match(reg));
// 输出: ["222", index: 4, input: "111$222", groups: undefined]
?<!pattern

捕获不以 pattern 开头的内容

var str = '¥998$888';
var reg = /(?<!\$)\d+/;
console.log(reg.exec(str));
// 输出: ['998', index: 1, input: '¥998$888', groups: undefined]

/(?<!a|b)c/.exec('dc');
// 输出: ['c', index: 1, input: 'dc', groups: undefined]

/(?<!a|b)c/.exec('ac');
// 输出: null
© 2016 - 2021 BY 禾惠 粤ICP备20027042号