Регулярное выражение /^[^aeiou]+(?=[aeiou])/
соответствует только одному чанку из 1+ символов, отличных от a
, e
, i
, o
, u
, за которыми следует a
, e
, i
, o
или u
букв, в начале строки.
Вы можете использовать
let regex = /[^aeiou](?=[^aeiou]*[aeiou])/gy;
let regexStr = "hhhhello".match(regex);
console.log(regexStr.length); // prints 4, regexStr = ["h", "h", "h", "h"]
/[^aeiou](?=[^aeiou]*[aeiou])/gy
соответствует только с начала строки благодаря модификатору y
sticky , тогда как g
сделает его совпадающим несколько раз до первой ошибки.
[^aeiou]
- соответствует 1 символу, отличному от a
, e
, i
, o
и u
(?=[^aeiou]*[aeiou])
- если за ним сразу следует 0 или более вхождений этих символов с 1 буквой, a
, e
, i
, o
или u
.
См. regex demo .