【发布时间】:2017-02-25 12:43:39
【问题描述】:
举个例子:
"12345".match(/(?=(\d{4}))/g);
将上面的那一行粘贴到我的 (Chrome) 控制台中将为我返回 ["", ""],但我正在尝试提取 ["1234", "2345"] 的数组。 This MDN article 似乎表明我确实应该期待一个匹配数组。
这个确切字符串上的特定正则表达式肯定会返回昨天在this question 中证明的那些匹配项。
如果我对此功能做出错误假设和/或滥用它,任何人都可以澄清预期的行为应该是什么以及我可以采取的任何替代方法。
【问题讨论】:
-
(1) 您不能在多个匹配项中匹配源字符串中的同一个字符,这显然是您想要的,因为“234”在两个所需的匹配项中。 (2) 前瞻不会捕获它正在查看的字符,这就是你得到空字符串的原因。
-
您不能只是从答案中窃取正则表达式,而忽略使用正则表达式的代码。 Chrome 会为您的代码生成预期的输出。如果您使用链接的答案中提供的代码,您将获得所需的结果。
-
@Rawing - 正如我在评论中所说的那样,代码导致了我的无限循环。我将在今天晚些时候重温它,但
match()更吸引我,因为它看起来更短/更具可读性。 -
请说明你对your字符串的期望。
标签: javascript regex match