我总是被preg_match
函数所困扰。
我希望输入与a-z
,A-Z
,0-9
,@#&-_.,
匹配,而不是其他内容。
因此,如果输入中有!
,则需要返回false。
到现在为止。
$string = "String-20";
return (preg_match("/[a-z][A-Z][0-9][@#&-_.,]/i", $string)) ? true : false;
这应该返回true
。
但请保持返回false
。
答案 0 :(得分:2)
你想把这些作为一套,而不是像那样打破它们。您的模式将与" aA0 @"
之类的字符串匹配你说"一个字符a-z,然后一个A-z,然后一个0-9,然后是这些特殊字符之一"但你真正想要的是"任何数量的这些特定字符"
^和$表示字符串的开头和结尾,所以我认为这应该做你想要的。
preg_match('/^[a-zA-Z0-9@#&\-_.,]*$/i', $string)
答案 1 :(得分:2)