Я пытался:
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
включает \w
себя больше, чем буквенно-числовое (оно включает символ подчеркивания), но включает все \d
.
В качестве альтернативы:
/^[a-zA-Z\d]+$/
Или даже просто:
/^[^\W_]+$/
Вы остановились на /
(разделитель рисунков) и $
(совпадающая конечная строка).
preg_match("/^[a-zA-Z0-9]+$/", $value)
В любом случае, это должно потерпеть неудачу, но если это может сработать, оно совпадает с одной цифрой в начале строки.
/^[a-z0-9]+$/i
Поскольку ОП сказал, что он хочет только буквы и цифры (без подчеркивания!), Еще один способ иметь это в регулярном выражении php – использовать выражения posix:
/^[[:alnum:]]+$/
Примечание. Это не будет работать в Java, JavaScript, Python, Ruby, .NET.
попробуйте этот путь .eregi ("[^ A-Za-z0-9.]", значение $)