Я работаю над небольшим проектом, мне нужно оценить строку только из четырех символов [я могу написать немного RE, но этот получил меня.].
Мне нужно написать регулярное выражение, которое должно соответствовать 1 upper case
слово, 1 lower case
слово, one digit
и один случайный символ, как [a-zA-Z0-9]
, порядок не имеет значения в строке.
Вот несколько строк, которые он должен передать или потерпеть неудачу.
Valid words: Abn1, GGh3, 89jK….
Invalid words: abcd, 112a, abDb, 2Ab, 4, AA, ….
любая помощь или хедс-ап ценится.
Множественный взгляд — ваш ответ
\b(?=[a-zA-Z0-9]*[a-z])(?=[a-zA-Z0-9]*[A-Z])(?=[a-zA-Z0-9]*[0-9])[a-zA-Z0-9]{4}\b
(?=[a-zA-Z0-9]*[a-z]) # string contains any lowercase character
(?=[a-zA-Z0-9]*[A-Z]) # string contains any uppercase character
(?=[a-zA-Z0-9]*[0-9]) # string contains any digit
[a-zA-Z0-9]{4} # 4 characters, since the 4th is the type that can fit in any of the three
Если строка из одного ввода (например, 4-символьное текстовое поле, вы должны заменить границы слова (\b
) с ^
а также $
, лайк
^(?=[a-zA-Z0-9]*[a-z])(?=[a-zA-Z0-9]*[A-Z])(?=[a-zA-Z0-9]*[0-9])[a-zA-Z0-9]{4}$
Единый RegExp не является хорошим способом сделать это.
Лучшее решение — просто проверить свои правила в цикле итерации символов.
В качестве опции вы можете написать 3 простых регулярных выражения для каждого правила вместо одного большого регулярного выражения.