匹配括号之间的所有内容

match everything between brackets

本文关键字:之间      更新时间:2023-09-26

我需要匹配两个方括号之间的文本。很多帖子都是关于它的,但没有得到JavaScript的支持,因为它们都使用了lookbacking。文本如下

"{代码}-{描述}"

我需要代码和说明与括号外匹配我得到的最接近的是这个

 /{(['s'S]*?)(?=})/g

给我留下了"{Code"answers"{Description"执行子字符串。

所以。。。有没有一种方法可以在Javascript中实现查找类型的功能?

您可以简单地尝试以下regex,

[^}{]+(?=})

代码:

> "{Code} - {Description}".match(/[^}{}]+(?=})/g)
[ 'Code', 'Description' ]

将其用作:

input = '{Code} - {Description}';
matches = [], re = /{(['s'S]*?)(?=})/g;
while (match = re.exec(input)) matches.push(match[1]);
console.log(matches);
["Code", "Description"]

实际上,在这种特殊情况下,解决方案非常简单:

s = "{Code} - {Description}"
result = s.match(/[^{}]+(?=})/g) // ["Code", "Description"]

你有没有尝试过这样的东西,它不需要前瞻或落后:

{([^}]*)}

您可能需要添加全局标志,但它似乎在regex测试仪中有效。

真正的问题是,您需要指定要捕获的内容,这可以通过正则表达式中的捕获组来实现。括号内匹配正则表达式的部分将是捕获组返回的值。因此,为了从结果中省略{},只需不将它们包含在括号内即可。然而,在正则表达式中匹配它们仍然是必要的。

您可以在这里看到如何在JavaScript中获取捕获组的值。