正则表达式迭代匹配多个单词

时间:2015-10-22 10:14:06

标签: javascript regex

我有这个测试字符串:

{.aa1 .b3c .f4}

我想在大括号内提取以文字点.开头的任意数量的单词。所以我写了这个JavaScript正则表达式:

/{((?=\.\w+?)(\.\w+?)\s*?)*}/g

我基本上向前看(?=\.\w+?),但是如果匹配则没有被捕获,因为前瞻是零宽度,所以我捕获(\.\w+?),然后允许空格\s*?的可能性,然后我将所有这些分组,并尝试通过用*重复它来迭代。但它没有用 - regex101.com告诉我回报:

MATCH 1
1.  `.f4`
2.  `.f4`

..虽然我想要一系列匹配(.aa1.b3c.f4)。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用以下正向前瞻性正则表达式。

string.match(/\.\w+(?=[^{}]*\})/g)

我认为必须正确关闭括号。

DEMO