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 中删除 "\n"后面没有另一个 "\n"

python - re.scanner 只搜索字符串的开头

r - 根据字符串匹配选择列 - dplyr::select

java split - 空间问题

javascript - 使用 jQuery javascript 根据域显示内容

javascript - 正则表达式 JavaScript : Symbol extraction after digit

javascript - 使表中的整行 float ,同时保持所有其他行就位

javascript - D 3's "empty”选择是做什么的?

Javascript:参数随着进一步的应用处理而改变

c# - 使用 C# Regex 将整个单词替换为符号