Если вы хотите использовать split, вы можете использовать Lookbehind Assertions, большинство браузеров теперь поддерживают их, но, пожалуйста, проверьте, хотите ли вы, чтобы старые браузеры тоже работали.
Edit: Хорошо, я должен был сказать, что большинство браузеров выглядят так, как будто они поддерживают
Это. Быстрый тест, и кажется, что Chrome является единственным банкоматом, и с
что я предполагаю, что Node.js тоже подойдет. Так что это решение может быть
более полезно в будущем. Так что я буду держать это здесь, с большим предупреждением
на совместимость ..
В основном это 3 сплита с двумя негативными взглядами и 1 позитивным взглядом.
(?<=\d)
(обратите внимание на пробел в конце) .. найти номер, но не захватывать, а затем разделить на пробел
(?<=\w,)
(снова обратите внимание на пробел в конце) .. найдите любое слово char и запятую, а не пробел и пробел.
(?=,)
разделяйте запятыми и не сохраняйте, чтобы сохранить на выходе.
const str1 = "21 rue Poliveau, 75005 Paris";
const str2 = "25 chemin de l'école, Sainte-Mère-Églis";
const re_split = /(?<=\d) |(?<=\w,) |(?=,)/;
console.log(str1.split(re_split));
console.log(str2.split(re_split));