在控制台和rubular中运行时,JavaScript Regex表达式会产生意外结果

时间:2019-02-11 03:37:15

标签: javascript regex rubular

我有一个地址字符串:

let addr3 =
  "123 Main Street St. Louisville OH 43071,432 Main Long Road St. Louisville OH 43071,786 High Street Pollocksville NY 56432,54 Holy Grail Street Niagara Town ZP 32908,3200 Main Rd. Bern AE 56210,1 Gordon St. Atlanta RE 13000,10 Pussy Cat Rd. Chicago EX 34342,10";

我想使用带有正则表达式和exec函数的正则表达式(我知道有不同的方法,但是我需要使用它们)来匹配每个地址行,如下所示:

['123 Main Street St. Louisville OH 43071,432',
'Main Long Road St. Louisville OH 43071,786',
'High Street Pollocksville NY 56432,54', ... ] 

我整理了以下正则表达式:

/(?:^|,\d+.|,\d+)(?=([^,]+,\d+))/;

当我在Rubular中使用它时,此表达式与上面的每个地址字符串匹配,当我尝试通过以下方式从VScode运行该表达式时:

let match;
const matches = [];
const pattern = /(?:^|,\d+.|,\d+)(?=([^,]+,\d+))/;
while ((match = pattern.exec(addr3))) {
  matches.push(match[1]);
}
console.log(matches);

我遇到致命错误,文本无法编译:

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

为什么此正则表达式组合在Rubular中可以使用,但不能运行exec循环,如何修改代码以使其正常运行?

0 个答案:

没有答案