Подтвердить что ты не робот

Выражение регулярного выражения для соответствия согласным

Как я могу обнаружить с помощью regex expression, если один и тот же согласный повторяется три или более раза?

Моя идея - сопоставлять слова типа tttool или likkke или likkkkke

4b9b3361

Ответ 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) делает регистр нечувствительным к регистру.

Смотрите живую демонстрацию.

Ответ 4

Повторное выражение из ответа выше [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 

   }