PHP – 正则expression式只允许字母和数字
我努力了:
preg_match("/^[a-zA-Z0-9]", $value)
但即时通讯做错了我猜。
1.使用PHP的内置ctype_alnum
你不需要为此使用正则expression式,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"; } } ?>
2.或者,使用正则expression式
如果你拼命想使用正则expression式,你有几个select。
首先:
preg_match('/^[\w]+$/', $string);
\w
包含超过字母数字(包含下划线),但包含\d
。
或者:
/^[a-zA-Z\d]+$/
甚至只是:
/^[^\W_]+$/
你离开了/
(模式分隔符)和$
(匹配结束string)。
preg_match("/^[a-zA-Z0-9]+$/", $value)
- 缺less结束锚$
- 缺less乘数
- 缺less结束分隔符
所以它应该会失败,但是如果它可以工作的话,它只能匹配string开头的一个数字。
/^[a-z0-9]+$/i
正如OP所说,他只想要字母和数字(没有下划线!),另一种方法来在PHP的正则expression式是使用POSIXexpression式:
/^[[:alnum:]]+$/
注意:这不适用于Java,JavaScript,Python,Ruby,.NET
试试这样.eregi(“[^ A-Za-z0-9。]”,$ value)