gpt4 book ai didi

javascript - 模仿负面后视以匹配 JavaScript 正则表达式中没有紧跟特定字符的模式

转载 作者:行者123 更新时间:2023-11-29 19:13:28 25 4
gpt4 key购买 nike

我在 Javascript 中有这个正则表达式:

0x[A-F0-9]{2}\g

我想修改它以便在前一个字符不是 \ 时获得匹配。类似的东西:

  • 0x60 -> true
  • \0x60 -> false

我想出了类似的东西,但它不能正常工作:

[^\\]0x[A-F0-9]{2}\g

它匹配除 \ 之外的所有内容,这里的所有内容我的意思是:

  • a0x50 -> true,包括“a”
  • _0x50 -> true,包括“_”
  • ...
  • \0x50 -> false

正则表达式示例:regex101 , 其次是 Plnkr .

有可能实现吗?谢谢。

最佳答案

要点是将您通常放入否定回顾中的模式匹配到一个可选的捕获组中,然后检查该组是否匹配。如果是,则不需要匹配,否则,使用它。

如果需要匹配和收集子串,使用

var re = /(\\?)0x[A-F0-9]{2}/gi; 
var str = '\\0x50 0x60 asdasda0x60';
var res = [];
while ((m = re.exec(str)) !== null) {
if (!m[1]) {
res.push(m[0]);
}
}
document.body.innerHTML = "TEST: " + str + "<br/>";
document.body.innerHTML += "RES: " + JSON.stringify(res,0,4) + "<br/>";

如果您只需要替换那些在 0x.. 之前没有 \ 的字符串,请使用replace 方法中的回调,用于检查第 1 组是否匹配。如果是,则替换为整个匹配项,如果不是,则替换为您需要的模式。

var re = /(\\?)0x[A-F0-9]{2}/gi; 
var str = '\\0x50 0x60 asdasda0x60';
var res = str.replace(re, function(m, group1){
return group1 ? m : "NEW_VAL";
});
document.body.innerHTML = "TEST: " + str + "<br/>";
document.body.innerHTML += "RES: " + res + "<br/>";

关于javascript - 模仿负面后视以匹配 JavaScript 正则表达式中没有紧跟特定字符的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37059319/

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