我需要匹配两个括号之间的文本。很多帖子都是关于它的,但是非由JavaScript支持,因为它们都使用了lookbehind。 文本如下
" {Code} - {Description}"
我需要将代码和描述与括号匹配 我得到的最接近的是
/{([\s\S]*?)(?=})/g
离开我" {Code"和" {描述"然后我跟着它 做一个子串。
所以...有没有办法在Javascript中做一个lookbehind类型的功能?
答案 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中了解如何获取捕获组的价值。