Выражение регулярного выражения для соответствия согласным
Как я могу обнаружить с помощью regex expression, если один и тот же согласный повторяется три или более раза?
Моя идея - сопоставлять слова типа tttool или likkke или likkkkke
Ответ 1
В некоторых библиотеках регулярных выражений могут быть ярлыки, но вы всегда можете...
b{3,}|c{3,}|d{3,}...
Некоторые библиотеки, например, позволяют вам сопоставлять обратную ссылку, которая может быть немного чистым...
(bcd...)\1{2,}
Ответ 2
Попробуйте следующее:
([b-df-hj-np-tv-z])\1{2,}
Пояснение:
[b-df-hj-np-tv-z] - все согласные
\1 - обратная ссылка на 1-ю группу (т.е. тот же символ)
{2,} означает "2 или более предыдущего термина", делая 3 или более всех
Протестировано, и это работает.
Ответ 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,}
Ответ 5
Вы можете использовать группы захвата с обратными ссылками. Это будет захватывать повторяющиеся символы:
/(
([\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-двигатели поддерживают обратные ссылки.
Ответ 6
я бы предложил тебе
function Consonant(letter) {
return !letter.match(/[aeiouy\s]/i); #y is maybe not but I have accepted it
}