我试着在这里查看为什么这段代码不起作用,没有在哪里,现在我希望有人可以帮助我。
function validateData($string) {
if (empty($string)) {
return 'error';
} elseif (strlen($string) <= 1) {
return 'error';
} elseif (preg_match('[a-zA-Z0-9]+\ ?', $string)) {
return 'error';
} else {
return 'normal';
}
}
当我执行上面的代码时,使用:
echo validateData('Test');
echo validateData('Test!');
这两个回声'正常'..然而,第二个例子包含'!'在字符串中,由于上面代码中的preg_match语句,应该返回'error'。
成就目标。检查字符串以确保它不是EMPTY,它超过1个字符并且只包含a-z,A-Z,0-9或空格。所以没有特殊字符。
非常感谢你提前得到的所有答案,我真的很感激!
肯
答案 0 :(得分:1)
您的模式应如下所示:
preg_match('/([^a-zA-Z0-9 ])+/', $string);
^
符号用于否定字符集。
答案 1 :(得分:1)
使用!preg_match(pattern,$string)
,如果您需要验证包含空格的字符串,请使用以下内容,否则请从\s
模式中删除preg_match
function validateData($string) {
if (empty($string)) {
return 'error';
} elseif (strlen($string) <= 1) {
return 'error';
} elseif (!preg_match('/^[A-Za-z0-9\s]+$/', $string)) {
return 'error';
} else {
return 'normal';
}
}
答案 2 :(得分:0)
尝试:
preg_match('/[a-zA-Z0-9]+\ ?/', $string)
答案 3 :(得分:0)
替换
preg_match('[a-zA-Z0-9]+\ ?', $string)
带
preg_match('/[^a-zA-Z0-9]/', $string)
答案 4 :(得分:0)
如果字符串为空,当你要求它的字符串长度时它将等于0,因此测试空($ string)是没用的,因为它被第二次测试覆盖。
使用正则表达式增加了复杂性而没有任何好处,有一个专用函数可以为字母数字字符串返回true或false:ctype_alnum($ string)
您的功能可以是:
function validateData($string) {
return (strlen($string) <= 1 || !ctype_alnum($string)) ? 'error' : 'normal';
}