#javascript #regex
#javascript #регулярное выражение
Вопрос:
Я работаю над некоторым регулярным выражением с помощью JavaScript. Теперь я создал регулярное выражение, которое проверяет, содержит ли строка две или более одинаковых буквы, следующих друг за другом. Я хотел бы создать регулярное выражение, которое проверяет, содержит ли слово / строка две или более одной конкретной буквы, независимо от того, следуют ли они друг за другом или просто в одном и том же слове / строке.
Это должно было бы соответствовать: drama и anaconda, но не соответствовать: lame, kiwi или tree.
Это регулярное выражение в JS.
const str = "anaconda";
str.match(/[a]{2,}/);
Комментарии:
1. Может быть, все, что вам нужно, это
/a.*a/
(или/a[^a]*a/
) проверить, содержит ли строка хотя бы дваa
s?2.Что-то вроде
S*(S)S*1S*
regex101.com/r/VNnfjP/1
Ответ №1:
Используйте
w*(w)w*1w*
Смотрите доказательство
ОБЪЯСНЕНИЕ
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))
Комментарии:
1. Да, для символов word, я думаю, это было бы так.
2. Спасибо за ответ, с отличным объяснением! Но в этом случае регулярное выражение будет соответствовать, например, слову: дерево и киви , и я хочу, чтобы совпадение произошло только в том случае, если рассматриваемое слово содержит два или более: Как в данной строке. Есть какие-нибудь замечания по этому вопросу?
3. Может ли это быть решением:
[a]*([a])w*1[a]*
?4. @Krullmizter Не совсем .
Ответ №2:
Мой мыслительный процесс был примерно таким:
- Слово может начинаться с любого алфавита
- Слово может заканчиваться любым алфавитом
- Похожие буквы могут иметь ноль или несколько алфавитов между ними
- Если какие-либо из его букв похожи и соответствуют приведенным выше критериям, тогда примите слово
regex = /[a-z]*([a-z])[a-z]*1 [a-z]*/