J'ai essayé:
preg_match("/^[a-zA-Z0-9]", $value)
mais je suppose que je fais quelque chose de mal.
Vous n'avez pas besoin d'utiliser un regex pour cela, PHP a une fonction intégrée ctype_alnum
qui fera cela pour vous et exécutera plus rapidement:
<?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";
}
}
?>
Si vous voulez désespérément utiliser une expression régulière, vous avez quelques options.
D'abord:
preg_match('/^[\w]+$/', $string);
\w
comprend plus qu’un caractère alphanumérique (il comprend un soulignement), mais inclut tous les caractères \d
.
Alternativement:
/^[a-zA-Z\d]+$/
Ou même simplement:
/^[^\W_]+$/
Vous avez laissé le /
(délimiteur de motif) et $
_ (correspond à la chaîne de fin).
preg_match("/^[a-zA-Z0-9]+$/", $value)
Cela devrait donc échouer quand même, mais si cela peut fonctionner, cela correspond à un chiffre au début de la chaîne.
/^[a-z0-9]+$/i
Comme l'OP a dit qu'il veut des lettres et des chiffres UNIQUEMENT (pas de trait de soulignement!), Une autre façon de l'inclure dans php regex consiste à utiliser des expressions posix:
/^[[:alnum:]]+$/
Note: Cela ne fonctionnera pas en Java, JavaScript, Python, Ruby, .NET