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)