PHP:检查字符串是否包含字母+数字

时间:2014-05-25 11:28:41

标签: php preg-match

在PHP中,如何检查字符串是否包含以下基本字母和数字:

(caseinsensitive)基本字母必须是['A'到'Z'仅'('á'或'ã'或'Ã'等等......不允许)

"helLo" returns false // does not contain numbers
"3110" returns false // does not contain letters
"h3lLo" returns true
"héll9" returns false // é not allowed
"helLõ" returns false // õ not allowed
"h 3llo" returns false // because of the space

记住必须有字母和数字,是否也可以允许下划线'_'和破折号' - '?

编辑:

这有效,但看起来很复杂,任何建议添加_和 - ? :

$var="hell1um";
 if (strcspn($var, '0123456789') != strlen($var)) {
     if (ctype_alnum($var)) { echo "1"; }
 }

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

/^(?=[a-z\d ]*[a-z])(?=[a-z\d ]*\d)[a-z\d ]*$/i

这使用正向前瞻断言(?=),它确保字符串匹配,但不会消耗它匹配的字符。这意味着可以进行两次单独的检查。

它会在字符串的开始^和结束$之间进行检查:

  1. 零个或多个有效字符(字母数字或空格)后跟一个[a-z]字符。
  2. 零个或多个有效字符后跟一个数字。
  3. 只要满足这两项检查且其余字符也有效,字符串就会通过测试。

    如果要允许其他字符(如下划线和短划线),可以将它们添加到有效字符类[a-z\d _-]中。