Регулярка: в строке не менее одной буквы

lonejan

Постоялец
Регистрация
7 Фев 2008
Сообщения
128
Реакции
11
Здравствуйте!

Есть регулярное выражение:
Код:
/^[a-zA-Z0-9]{3,64}$/

Как добавить проверку, чтобы в строке было не менее одной буквы. Например:

123456789 - не катит
123s456789 - катит
 
Это не то, посмотри на регулярку в первом посте.

Конкретнее: надо чтобы пропускало строки, где есть a-zA-Z0-9, но не менее одной буквы.
 
так подойдет? :)
PHP:
/[a-z^]+[\d\w]{3,64}/i
 
Для составления регулярного выражения лучше сначала обдумать что вы хотите описать.
Потому что в ваших примерах задача неоднозначна. Она может быть описана как: "выражение которое начинается с цифр, затем идёт одна или несколько букв, затем идут снова цифры" или "выражение в котором присутствует хотя бы одна буква".
Для этих случаев будут разные регулярные выражения. Конкретизируйте задачу, чтобы остальным было легче Вам помочь.
И чтобы не быть голословным вот регулярки для каждого примера:
PHP:
$pattern = "/[\d]+[a-zA-Z]+[\d]+/i"; //выражение которое начинается с цифр, затем идёт одна или несколько букв, затем идут снова цифры
$pattern = "/.*?[a-zA-Z]+.*?/i"; //выражение в котором присутствует хотя бы одна буква

PHP:
/[a-z^]+[\d\w]{3,64}/i
Вы хотели вначале поставить отрицание в выражении? Я вас правильно понял?
Тогда скорее будет так:
PHP:
$pattern = "/[^a-z]+[\w]{3,64}/i";
Для справки: множество \w включает в себя подмножество \d.
 
Видели регулярку в первом посте?:) То же самое, только + должна присутствовать хоть одна буква в проверяемом тексте, неважно в какой части строки.

Код:
/[a-z^]+[\d\w]{3,64}/i

Не работает, пропускает строку вида "$%#$%^$#^#Q123456789"
 
Видели регулярку в первом посте?:) То же самое, только + должна присутствовать хоть одна буква в проверяемом тексте, неважно в какой части строки.
Тогда просто разбейте строку на 3 части. до буквы, буква, после буквы:
PHP:
$pattern = '#([a-zA-Z\d]+[a-zA-Z]+[a-zA-Z\d]+){3,64}#i';
Как-то так...
 
Нет мочи больше ждать, обойдусь буквой в начале строки. Сделал так:
Код:
/^[a-zA-Z]+[a-zA-Z0-9]*$/
Скажите как теперь ВСЮ строку ограничить {3,64}

PS
Код:
$pattern = '#([a-zA-Z\d]+[a-zA-Z]+[a-zA-Z\d]+){3,64}#i';
не работает
 
Код:
[A-z\d]*[A-z]+[A-z\d]*

проверял на
Код:
123456789 - не хавает
 123s456789
 s23456789
 12345678s
 1s3s456789
 
Назад
Сверху