Я работаю над регулярным выражением с помощью JavaScript. Теперь я создал регулярное выражение, которое проверяет, есть ли в строке две или более одинаковых букв, следующих друг за другом. Я хотел бы создать регулярное выражение, которое проверяет, содержит ли слово / строка две или более одной конкретной буквы, независимо от того, находятся ли они друг за другом или только в одном слове / строке.

Он должен совпадать: драма и анаконда , но не совпадать: хромой , киви или дерево .

Это регулярное выражение в JS.

const str = "anaconda"; 
str.match(/[a]{2,}/);
1
Krullmizter 11 Фев 2021 в 23:17

2 ответа

Лучший ответ

Использовать

\w*(\w)\w*\1\w*

См. доказательство

ПОЯСНЕНИЕ

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  \w*                      word characters (a-z, A-Z, 0-9, _) (0 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    \w                       word characters (a-z, A-Z, 0-9, _)
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  \w*                      word characters (a-z, A-Z, 0-9, _) (0 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  \1                       what was matched by capture \1
--------------------------------------------------------------------------------
  \w*                      word characters (a-z, A-Z, 0-9, _) (0 or
                           more times (matching the most amount
                           possible))
2
Ryszard Czech 11 Фев 2021 в 22:56

Мой мыслительный процесс был примерно таким:

  1. Слово может начинаться с любого алфавита
  2. Слово может оканчиваться любым алфавитом
  3. Подобные буквы могут иметь ноль или несколько алфавитов между ними
  4. Если какие-либо из его букв похожи и соответствуют критериям, указанным выше, примите слово
     regex = /[a-z]*([a-z])[a-z]*\1+[a-z]*/
0
shubhushan shambhu 11 Фев 2021 в 22:33
66162157