Регулярные выражения. Только латинница и цифры в строке
regexp.test(string)
Нужно проверить строку на полное совпадение с регулярным выражением (наличие в строке только латинницы и цифры одновременно).
^[a-zA-Z0-9]+$ - пробовал, оно проверяет как ИЛИ, а надо И.
Несколько примеров кейсов: "1" "q1" "1q" "q1q1" "asdasdDASD2ewdasFwd3E" "asdadsdasd234234" "123q" "1q2e3r1aAWwd23da1" "d23erwry2367rtw7y8urj43ur2u920fjwheufds89sjk" "qkwduiygfewr1627e81i02171tey18eu901ie09u8u8u88uu88uu000"
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Вы можете использовать одно из следующих выражений:
^(?=.*?[a-zA-Z])(?=.*?\d)[a-zA-Z\d]+$
^(?=\d*[a-zA-Z])(?=[a-zA-Z]*\d)[a-zA-Z\d]+$
^(?=\d*[a-zA-Z])(?=\D*\d)[a-zA-Z\d]+$
^(?:\d+[a-zA-Z]|[a-zA-Z]*\d)[a-zA-Z\d]+$
^([0-9]+[a-zA-Z]|[a-zA-Z]*[0-9])[a-zA-Z0-9]+$
Подробности
^- начало строки(?=.*?[a-zA-Z])- после нуля и более символов, отличных от символов перевода строки, как можно меньше, должна быть буква из набора ASCII(?=.*?\d)- после нуля и более символов, отличных от символов перевода строки, как можно меньше, должна быть буква из набора ASCII(?=\d*[a-zA-Z])(?=[a-zA-Z]*\d)- после текущей позиции должно быть ноль и более цифр, сразу после которых идёт буква из набора ASCII, или ноль и более букв из набора ASCII, сразу после которых идёт цифра(?=\d*[a-zA-Z])(?=\D*\d)- после текущей позиции должно быть ноль и более цифр, сразу после которых идёт буква из набора ASCII, или ноль и более нецифровых символов, сразу после которых идёт цифра(?:\d+[a-zA-Z]|[a-zA-Z]*\d)[a-zA-Z\d]+/([0-9]+[a-zA-Z]|[a-zA-Z]*[0-9])[a-zA-Z0-9]+- одна и более цифр, а потом буква из набора ASCII или ноль и более букв из набора ASCII, а потом цифра, после которых идёт одна и более цифр или букв из набора ASCII[a-zA-Z\d]+- одна и более цифр или букв из набора ASCII$- конец строки.