Строка содержит не меньше 2 разных символов из списка
Вот набор символов [!@#$%^&*?]
, в строке должно быть не меньше двух разных
Источник: Stack Overflow на русском
Вот набор символов [!@#$%^&*?]
, в строке должно быть не меньше двух разных
^.*?([!@#$%^&*?]).*?(?!\1)[!@#$%^&*?].*$
Пример на JS
const reg = /^.*?([!@#$%^&*?]).*?(?!\1)[!@#$%^&*?].*$/gm;
var str = `строка содержит ! и содержит второй %
строка содержит 2 одинаковых символа подряд @@
строка не содержит символы
строка % содержит только один символ
строка содержит аж три символа %%?
!!`;
console.log(str.match(reg));
^
- начало строки
.*?
- 0 и более любых символов, вопросительный знак в данном случае смягчает квантификатор *
, т.е. до ближайшего подходящего символа из следующей части выражения:
const str = "текст % с повторяющимся % знаком % для примера";
const reg1 = /^.*%/gm;
const reg2 = /^.*?%/gm;
console.log(str.match(reg1) + "\n" + str.match(reg2));
([!@#$%^&*?])
- один символ из вашего набора захватываем в группу
.*?
(?!\1)
- негативный просмотр вперед, что следующий символ не равен уже захваченному в группу
[!@#$%^&*?]
- символ из шаблона кроме того, который есть в группе
.*$
- ноль и более любых символов до конца строки