繁体   English   中英

匹配括号之间的所有内容

[英]match everything between brackets

我需要在两个方括号之间匹配文本。 关于它的文章很多,但JavaScript不支持,因为它们都使用了后向功能。 案文如下

“ {代码}-{说明}”

我需要代码和描述与括号最匹配,这是我得到的

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

给我留下“ {Code”和“ {Description”,然后我做一个子字符串。

那么...有没有办法在Javascript中进行后备功能类型?

用作:

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

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

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

您可以尝试以下正则表达式,

[^}{]+(?=})

码:

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

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

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

您是否尝试过类似的操作,而无需先行或后行:

{([^}]*)}

您可能需要添加全局标志,但是它似乎可以在regex测试器中使用

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

您可以在此处查看如何获取JavaScript中捕获组的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM