Skip to content

正则扩展

命名捕获分组(Regular Expression Named Capture Groups)

  • 之前的做法
js
// 声明一个字符串
let str = '<a href="https://squid-xu.github.io/blog/">squid-Xu</a>';

// 提取 url 与 标签文本
const reg = /<a href="(.*)">(.*)<\/a>/;
//执行
const result = reg.exec(str);

console.log(result[1]); //https://squid-xu.github.io/blog/
console.log(result[2]); //squid-Xu
  • 新方法
js
// 声明一个字符串
let str = '<a href="https://squid-xu.github.io/blog/">squid-Xu</a>';

const reg = /<a href="(?<url>.*)">(?<text>.*)<\/a>/;
const result = reg.exec(str);
console.log(result.groups); //{url: 'https://squid-xu.github.io/blog/', text: 'squid-Xu'}

反向断言(lookbehind)

js
// 声明一个字符串
let str = 'AJ238298392一二三四888六六六';

// 正向断言
// const reg = /\d+(?=六)/;
// const result = reg.exec(str);
// console.log(result[0]); //888

// 反向断言
const reg = /(?<=四)\d+/;
const result = reg.exec(str);
console.log(result[0]); //888

Released under the MIT License.