Сопоставление строки с глобальным регулярным выражением всегда даст вам максимально длинные непересекающиеся подстроки.Первое самое длинное совпадение - это вся строка "test"
, а затем остается пустая строка ""
, что тоже совпадает.Вы можете достичь желаемого, сопоставляя несколько регулярных выражений с различными спецификаторами длины, например:
"test".match(/[a-z]{0}/g);
"test".match(/[a-z]{1}/g);
"test".match(/[a-z]{2}/g);
"test".match(/[a-z]{3}/g);
"test".match(/[a-z]{4}/g);
Конечно, это должно быть сделано более элегантно;Вы можете построить эти регулярные выражения динамически, например, используя new RegExp("[string]")
.Тем не менее, это не даст, например, "es"
(хотя вы могли бы обойти это снова), но, согласно вашему вопросу, вы все равно не хотите получать этот матч.