Регулярное выражение (?i)(^(?!^.*?admin)(?!^.*?admin[admin\d]).*$)
слишком избыточно, оно равно (?i)^(?!^.*?admin).*$
. Это в основном соответствует любой строке, которая не содержит admin
подстроки.
Регулярное выражение ^[^<>?]{5,100}$
запрещает <
, >
и ?
в строке и устанавливает ограничение длины строки.
Объединение двух выполняется путем замены .*
в первом шаблоне на потребляющую часть второго регулярного выражения ([^<>?]{5,100}
):
(?i)^(?!^.*?admin)[^<>?]{5,100}$
Подробности
(?i)
- режим без учета регистра для ^
- начало строки (?!^.*?admin)
- подстрока admin
не допускается нигде после 0 или более символов, кроме символы разрыва строки, как можно меньше [^<>?]{5,100}
- от пяти до ста символов, кроме <
, >
и ?
$
- конец строки.