我试过了:
preg_match("/^[a-zA-Z0-9]", $value)
但我猜错了。
答案 0 :(得分:91)
你不需要使用正则表达式,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_]+$/
答案 1 :(得分:18)
您不使用/
(模式分隔符)和$
(匹配结束字符串)。
preg_match("/^[a-zA-Z0-9]+$/", $value)
答案 2 :(得分:12)
所以它无论如何都应该失败,但是如果它可以工作,它只匹配字符串开头的一个数字。
/^[a-z0-9]+$/i
答案 3 :(得分:2)
由于OP说他只想要字母和数字(没有下划线!),在 php 正则表达式中使用posix表达式的另一种方法是使用posix表达式:
/^[[:alnum:]]+$/
注意:这不适用于Java,JavaScript,Python,Ruby,.NET
答案 4 :(得分:-1)
试试这种方式.eregi(“[^ A-Za-z0-9。]”,$ value)