Как я могу обнаружить с помощью regex expression
, если один и тот же согласный повторяется три или более раза?
Моя идея - сопоставлять слова типа tttool
или likkke
или likkkkke
Как я могу обнаружить с помощью regex expression
, если один и тот же согласный повторяется три или более раза?
Моя идея - сопоставлять слова типа tttool
или likkke
или likkkkke
В некоторых библиотеках регулярных выражений могут быть ярлыки, но вы всегда можете...
b{3,}|c{3,}|d{3,}...
Некоторые библиотеки, например, позволяют вам сопоставлять обратную ссылку, которая может быть немного чистым...
(bcd...)\1{2,}
Попробуйте следующее:
([b-df-hj-np-tv-z])\1{2,}
Пояснение:
[b-df-hj-np-tv-z]
- все согласные\1
- обратная ссылка на 1-ю группу (т.е. тот же символ){2,}
означает "2 или более предыдущего термина", делая 3 или более всехПротестировано, и это работает.
Это о кратчайшем регулярном выражении, которое я мог придумать для этого:
(?i)([b-z&&[^eiou]])\1\1+
Это использует вычитание символьного символа регулярного выражения, чтобы исключить гласные.
Мне не нужно было упоминать "а", потому что я начал диапазон от "б".
Использование (?i)
делает регистр нечувствительным к регистру.
Смотрите живую демонстрацию.
Повторное выражение из ответа выше [b-df-hj-np-tv-z])\1{2,}
имеет ошибку ( "y" fogotten)
Это должно быть [b-df-hj-np-tv-xz])\1{2,}
Вы можете использовать группы захвата с обратными ссылками. Это будет захватывать повторяющиеся символы:
/(
([\w]) ## second group is just one symbol
\2 ## match symbol found in second groups
\2+ ## match same symbol one or more times
)/x ## x is just to allow inner comments
Но не все regexp-двигатели поддерживают обратные ссылки.
я бы предложил тебе
function Consonant(letter) {
return !letter.match(/[aeiouy\s]/i); #y is maybe not but I have accepted it
}