2013-05-29 3 views
0

Я хочу образец регулярное выражение, позволяющее только буквенно-цифровое значение, ни только буквы, ни цифры, имеющие минимальную длину = 4 и максимальная длина = 15,регулярное выражение шаблон для буквенно-цифрового значения

Я попытался с помощью /^[a-zA-Z0-9]{4,15}$/, но эта схема также позволяет только алфавиты и только цифры.

Пожалуйста, помогите мне

+0

Образец регулярного выражения, который вы указываете, должен содержать алфавиты ИЛИ цифры. – SiddharthaRT

+0

@SiddharthaRT это проблема, которую он только хочет получить смешанные результаты – WhileTrueSleep

ответ

2

Это должно сделать трюк:

^(?=^.{4,15}$)([a-zA-Z]+[0-9][a-zA-Z0-9]*|[0-9]+[a-zA-Z][a-zA-Z0-9]*)$

Смотрите рабочий пример здесь: http://regexr.com?351ia

Объяснение: (Обновлено: теперь с проверкой длины)

Первый положительный прогноз (?=^.{4,15}$) проверяет длину вашей строки.

Если строка начинается с буквой этой частью регулярного выражения используется для оценки его:

[a-zA-Z]+[0-9][a-zA-Z0-9]*

  • [a-zA-Z]+ означает, что строка начинается с по крайней мере одной буквы
  • [0-9] затем в в некоторых случаях должно быть число
  • [a-zA-Z0-9]*, за которым следует любое количество цифр или цифр

Если строка начинается с номером во второй части регулярного выражения используется:

[0-9]+[a-zA-Z][a-zA-Z0-9]*

То же, что выше, только на этот раз там должна быть буквой где-то в строке.

+0

Вы не проверяли ограничения длины. – HBP

+0

Да, просто это видел. Спасибо за напоминание. ;) – Friederike

0

Возможно, вы захотите сделать двойной просмотр, чтобы искать цифры и буквы, как только числа и буквы будут найдены, матч будет продолжен, иначе он не будет.

Regex: /^(?=.*?[a-zA-Z])(?=.*?[0-9])[a-zA-Z0-9]{4,15}$/

0

Используйте оригинал для алфавитно-цифровых и длиной тестов, а затем проверить, что строка содержит альфа и числового путем тестирования цифры с последующим альфа или наоборот в любом месте строки.

/^[a-z\d]{4,15}$/i.test (s) && /\d[a-z]|[a-z]\d/i.test (s); 
Смежные вопросы