在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"; }
}
答案 0 :(得分:1)
您可以使用此正则表达式:
/^(?=[a-z\d ]*[a-z])(?=[a-z\d ]*\d)[a-z\d ]*$/i
这使用正向前瞻断言(?=)
,它确保字符串匹配,但不会消耗它匹配的字符。这意味着可以进行两次单独的检查。
它会在字符串的开始^
和结束$
之间进行检查:
[a-z]
字符。 只要满足这两项检查且其余字符也有效,字符串就会通过测试。
如果要允许其他字符(如下划线和短划线),可以将它们添加到有效字符类[a-z\d _-]
中。