如何在PHP中检查字符串是否至少是一个字母和一个数字?可以有特殊字符,但基本上需要有一个字母和一个数字。
示例:
$string = 'abcd' //Return false
$string = 'a3bq' //Return true
$string = 'abc#' //Return false
$string = 'a4#e' //Return true
感谢。
答案 0 :(得分:6)
试试这个
if (preg_match('/[A-Za-z]/', $string) & preg_match('/\d/', $string) == 1) {
// string contains at least one letter and one number
}
答案 1 :(得分:2)
preg_match('/\pL/', $string) && preg_match('/\p{Nd}/', $string)
或
preg_match('/\pL.*\p{Nd}|\p{Nd}.*\pL/', $string)
或
preg_match('/^(?=.*\pL)(?=.*\p{Nd})/', $string)
或
preg_match('/^(?=.*\pL).*\p{Nd}/', $string)
我不确定\d
是否等同于[0-9]
,或者它是否与PHP中的十进制数字匹配,所以我没有使用它。使用匹配正确事物的\d
,[0-9]
和\p{Nd}
中的任何一个。
答案 2 :(得分:0)
您正在寻找的模式是^.*(?=.*\d)(?=.*[a-zA-Z]).*$
使用中:
if( preg_match( "/.*(?=.*\d)(?=.*[a-zA-Z]).*/", $string ) )
echo( "Valid" );
else
echo( "Invalid." );
答案 3 :(得分:-1)
如果只有拉丁字符和数字,这应该有效:
if (preg_match('/[a-z0-9]+/i', $search_string)) { ... has at least one a-zA-Z0-9 ... }