1

我有一串地址:

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 循环,以及如何修改代码以使其正常工作?

4

0 回答 0