[英]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.