Выражение 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";
Я хочу использовать Regex с предпросмотром и функцией exec (я знаю, что есть разные способы сделать это, но я должен использовать их), чтобы соответствовать каждой строке адреса, как показано ниже:
['123 Main Street St. Louisville OH 43071,432',
'Main Long Road St. Louisville OH 43071,786',
'High Street Pollocksville NY 56432,54', ... ]
Я собрал следующее выражение Regex:
/(?:^|,\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
Почему эта комбинация regex будет работать в Rubular, но я не буду запускать цикл exec, и как я могу пересмотреть код, чтобы он работал правильно?