负向后查找的 JavaScript 等效项
负向后查找,匹配不以特定字符集开头的字符串,不直接支持JavaScript 正则表达式。但是,还有其他方法可以实现类似的结果。
正向先行和字符串反转
由于 JavaScript 支持正向先行 (?=),因此一种方法涉及:
示例:
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中文网其他相关文章!