匹配括号之间的一切

时间:2014-09-17 14:16:07

标签: javascript regex

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

" {Code} - {Description}"

我需要将代码和描述与括号匹配 我得到的最接近的是

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

离开我" {Code"和" {描述"然后我跟着它 做一个子串。

所以...有没有办法在Javascript中做一个lookbehind类型的功能?

4 个答案:

答案 0 :(得分:1)

将其用作:

input = '{Code} - {Description}';
matches = [], re = /{([\s\S]*?)(?=})/g;

while (match = re.exec(input)) matches.push(match[1]);

console.log(matches);
["Code", "Description"]

答案 1 :(得分:1)

你可以试试下面的正则表达式,

[^}{]+(?=})

代码:

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

{([^}]*)}

您可能需要添加全局标记,但它似乎有效in the regex tester

真正的问题是您需要指定要捕获的内容,以及在正则表达式中使用捕获组执行的操作。括号内匹配的正则表达式的部分将是该捕获组返回的值。因此,为了从结果中省略{},您只是不包括括号内的那些。但是,仍然需要在正则表达式中匹配它们。

您可以在JavaScript here中了解如何获取捕获组的价值。