首页 >web前端 >js教程 >如何在 JavaScript 正则表达式中模拟负向后查找?

如何在 JavaScript 正则表达式中模拟负向后查找?

Barbara Streisand
Barbara Streisand原创
2024-12-14 15:48:11637浏览

How Can I Simulate Negative Lookbehind in JavaScript Regular Expressions?

负向后查找的 JavaScript 等效项

负向后查找,匹配不以特定字符集开头的字符串,不直接支持JavaScript 正则表达式。但是,还有其他方法可以实现类似的结果。

正向先行和字符串反转

由于 JavaScript 支持正向先行 (?=),因此一种方法涉及:

  1. 反转输入字符串。
  2. 使用具有正向前瞻的反向正则表达式。
  3. 反转并重新格式化

示例:

const reverse = s => s.split('').reverse().join('');
const regexp = /m(?!([abcdefg]))/;

test(['jim', 'm', 'jam'], regexp);

function test(strings, regexp) {
  strings.map(reverse).forEach((s, i) => {
    match = regexp.test(s);
    console.log(strings[i], match, 'Token: ', match ? reverse(regexp.exec(s)[0]) : 'Ø');
  });
}

结果:

jim true Token: m
m true Token: m
jam false Token: Ø

后向断言支持(自2018)

2018 年,后向断言(包括负后向断言)成为 ECMAScript 语言规范的一部分。它们可以按如下方式使用:

负向回顾:

(?<!...)

正向向后查找:

(?<=...)

示例:

匹配“max-height”但不匹配"line-height":

regexp = /thgieh(?!(-enil))/;
test(['max-height', 'line-height'], regexp);

结果:

max-height true Token: height
line-height false Token: Ø

以上是如何在 JavaScript 正则表达式中模拟负向后查找?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn