При написании тестов столкнулся с интересной проблемой. Метод String.split
работал не так, как я от него ожидал. Я долго возился с различными вариантами жадного и ленивого поиска, пока наконец не понял, что дело не в них. Перейду сразу к сути:
'aaaa'.split(/a+/); // ["", ""] 'aaaa'.split(/(a+)/); // ["", "aaaa", ""] WAT? 'aaaa'.split(/(?:a+)/); // ["", ""]
Полез в дебри документации:
Если разделитель является регулярным выражением,
содержащим подгруппы
, то каждый раз при сопоставлении с разделителем, результаты (включая те, что не определены) захвата подгруппыбудут помещаться внутрь выходного массива
. Однако, не все браузеры поддерживают эту возможность.
Всё просто. Если знаешь.