gpt4 book ai didi

Javascript:在不记得最后一场比赛的情况下在正则表达式中反向引用

转载 作者:行者123 更新时间:2023-11-30 00:15:11 26 4
gpt4 key购买 nike

在反向引用中有没有不记得最后一个匹配值的东西?

(abc|def)=\1 matches abc=abc or def=def, but not abc=def or def=abc.

在一个字符串中,我需要匹配一个匹配 abc=defdef=abc 的模式,并带有反向引用。但我只能匹配 abc=abcdef=def

我可以使用 (abc|def)=(abc|def) 这样的正则表达式模式来做到这一点。这匹配所有情况,如 abc=abc、def=def、abc=def , def=abc

在我的例子中,abc 或 def 是一个很长的搜索过程,如果我必须更改正则表达式,我必须在两个地方都进行更改。有没有什么办法可以在没有内存的情况下向后引用该组?

https://regex101.com/r/bL9wU1/1

最佳答案

您不能为此任务使用反向引用。

Backreferences match the same text as previously matched by a capturing group.

也就是说,它们不使用捕获组中定义的相同模式

解决方法是使用 block 构建动态正则表达式模式并使用 RegExp 构造函数:

var ss = [ "abc=abc", "def=def", "abc=def", "def=abc"]; // Test strings

var block = "(?:abc|def)"; // Define the pattern block
var rx = RegExp(block + "=" + block); // Build the regex dynamically
document.body.innerHTML += "Pattern: <b>" + rx.source
+ "</b><br/>"; // Display resulting pattern
for (var s = 0; s < ss.length; s++) { // Demo
document.body.innerHTML += "Testing \"<i>" + ss[s] + "</i>\"... ";
document.body.innerHTML += "Matched: <b>" + rx.test(ss[s]) + "</b><br/>";
}

关于Javascript:在不记得最后一场比赛的情况下在正则表达式中反向引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029015/

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