当前位置: 首页 > 知识库问答 >
问题:

JavaScript:在Regex中反向引用而不记得上次匹配

尹承业
2023-03-14
(abc|def)=\1 matches abc=abc or def=def, but not abc=def or def=abc.

在我的例子中,abc或def是一个很长的搜索时间,如果我必须更改regex,我必须在这两个地方都更改。有没有什么方法可以在没有记忆的情况下回指这个群体?

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

共有1个答案

黄逸清
2023-03-14

不能对此任务使用反向引用。

反向引用匹配捕获组以前匹配的相同文本。

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

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/>";
}
 类似资料:
  • 我需要一个正则表达式,匹配所有被<@包围的数字!或<@和>。匹配项不能跟在奇数个反斜杠后面,但可以跟在零或偶数个反斜杠后面。 目前,我有以下regex: 问题是匹配包括反斜杠,我需要一个不包括反斜杠的正则表达式。 有人能做一个能完成这一点的正则表达式吗? 有效输入字符串: 匹配: 无效的输入字符串: 匹配:无

  • 使用测试字符串: 是否可以将所有StringX作为反向引用?目前,我尝试的内容每次都会被覆盖,因此我最终会得到一个匹配项,即最后一个匹配项。 例如使用这样的正则表达式: 最后总是以的匹配结束。 到目前为止,我发现的最好的方法是删除上面的并在空格上爆炸,但我对是否有一种方法可以纯粹使用正则表达式来做到这一点很感兴趣。 专门更新PHP,实现这一点的最佳方法是什么?

  • 假设我有一个员工姓名列表,我想选择具有这些姓名的所有行: 也许简和乔不在这张桌子上。我如何创建一个查询来标识我的列表中根本不存在的项目。 我不是在寻找任何特定的格式作为返回的结果;它可以是逗号分隔的,也可以是具有各自不匹配名称的行列表。

  • 问题内容: 当我跑步 我懂了 但我认为它应该回来 因为字符串中有3 s,而不是2! 这是为什么? 我希望能够在RegEx中搜索字符串的所有出现并对其进行迭代。 FWIW:我正在使用node.js 问题答案: 仅返回第一个匹配项的捕获集,而不返回您期望的匹配项。因此,您真正看到的是(整个匹配项“ a”)和(第一个捕获项),即长度为2的数组。 同时,它的设计使您可以 再次 调用它以获取 下一个 匹配项

  • 问题内容: 我想使用IntelliJ的查找和替换功能来执行以下转换: 我尝试了以下方法: 查找文本: 替换为: 但是Intellij似乎无法识别和作为反向引用。我也尝试过一个斜杠,但这也不起作用。 问题答案: IntelliJ 用于 替换 反向引用。 在IntelliJ的帮助下: 有关正则表达式及其语法的更多信息,请参考java.util.regex的文档。反向引用应具有$ n而不是\ n格式。

  • 我试图在“users”表中删除一列(姑且称之为fooboo ),并进行迁移,但我得到了下一个错误: 一般错误: 1外键不匹配-"password_resets"引用"用户"(SQL: INSERT INTO用户(id, name, email,密码, foboos,created_at,updated_at)SELECT id, name, email,密码, foboos,created_at,