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

标签 javascript regex

我有这个测试字符串:

{.aa1 .b3c .f4}

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

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

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

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

..虽然我想要一个匹配数组(.aa1.b3c.f4)。我怎样才能实现这个目标?

最佳答案

您可以尝试以下基于正向前瞻的正则表达式。

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

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

DEMO

关于javascript - 正则表达式迭代匹配多个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33278580/

相关文章:

javascript - 三元(条件)运算符和样式

javascript - 替换换行符

MySQL 正则表达式 - 不以元音开头或结尾

javascript - 如何将vue js数据传递给php变量

future 8 天的 JavaScript date() 对象

javascript - 如何有效地为多个基于 Canvas 的 THREE.Texture 重用 Canvas

javascript - 使用 javascript 和 Jquery 验证 Gmail ID

swift - 避免以逗号分隔的双字母单词列表中的重复项

javascript - 在 Javascript 中将 $(美元符号)添加到多个数字

javascript - 为什么 CSS :active on link doesn't make the current page link highlighted?