gpt4 book ai didi

javascript - JavaScript 中的负后视等价物

转载 作者:IT王子 更新时间:2023-10-29 02:38:18 24 4
gpt4 key购买 nike

有没有办法实现相当于 negative lookbehind 的效果?在 JavaScript 正则表达式中?我需要匹配不以特定字符集开头的字符串。

如果在字符串的开头找到匹配的部分,我似乎无法找到一个不会失败的正则表达式。负面回顾似乎是唯一的答案,但 JavaScript 没有。

这是我想要工作的正则表达式,但它没有:

(?<!([abcdefg]))m

所以它会匹配 'jim' 或 'm' 中的 'm',但不会匹配 'jam'

最佳答案

自 2018 年以来,Lookbehind AssertionsECMAScript language specification 的一部分.

// positive lookbehind
(?<=...)
// negative lookbehind
(?<!...)

2018 年之前的回答

由于 Javascript 支持 negative lookahead ,一种方法是:

  1. 反转输入字符串

  2. 与反向正则表达式匹配

  3. 反转并重新格式化匹配项


const reverse = s => s.split('').reverse().join('');

const test = (stringToTests, reversedRegexp) => stringToTests
.map(reverse)
.forEach((s,i) => {
const match = reversedRegexp.test(s);
console.log(stringToTests[i], match, 'token:', match ? reverse(reversedRegexp.exec(s)[0]) : 'Ø');
});

示例 1:

跟随@andrew-ensley 的问题:

test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)

输出:

jim true token: m
m true token: m
jam false token: Ø

示例 2:

跟随@neaumusic 评论(匹配max-height 但不匹配line-height, token 是height):

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

输出:

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

关于javascript - JavaScript 中的负后视等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/641407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com