Я пробовал:
preg_match("/^[a-zA-Z0-9]", $value)
но я делаю что-то неправильно, я думаю.
Я пробовал:
preg_match("/^[a-zA-Z0-9]", $value)
но я делаю что-то неправильно, я думаю.
Для этого вам не нужно использовать регулярное выражение, PHP имеет встроенную функцию ctype_alnum
, которая сделает это для вас и выполнится быстрее:
<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
if (ctype_alnum($testcase)) {
echo "The string $testcase consists of all letters or digits.\n";
} else {
echo "The string $testcase does not consist of all letters or digits.\n";
}
}
?>
Если вы отчаянно хотите использовать регулярное выражение, у вас есть несколько вариантов.
Во-первых:
preg_match('/^[\w]+$/', $string);
\w
включает в себя больше, чем буквенно-числовое (оно включает подчеркивание), но включает все
\d
.
В качестве альтернативы:
/^[a-zA-Z\d]+$/
Или даже просто:
/^[^\W_]+$/
Вы остановились на /
(разделитель рисунка) и $
(совпадение с конечной строкой).
preg_match("/^[a-zA-Z0-9]+$/", $value)
Таким образом, он все равно должен потерпеть неудачу, но если он может работать, он совпадает с одной цифрой в начале строки.
/^[a-z0-9]+$/i
Поскольку OP сказал, что он хочет только буквы и цифры (без подчеркивания!), еще один способ иметь это в регулярном выражении php - использовать выражения posix:
/^[[:alnum:]]+$/
Примечание. Это не будет работать в Java, JavaScript, Python, Ruby,.NET
попробуйте этот путь .eregi( "[^ A-Za-z0-9.]", значение $)