我有一个textarea。我试图检查它在javascript中包含至少3个非空白字符,如果确实如此,我需要在php中重新检查发布的消息。
我认为一旦我在php中工作,我可以使用相同的正则表达式来实现javascript。然而,空白正在弄乱它。
我不明白为什么以下内容在php中不起作用:
$msg = mysql_real_escape_string($_POST["msg"]);
if(!preg_match('/[\S]{3,}/',$msg)){
echo 'too short';
}
对我来说,似乎需要至少3个“非空白字符”。但是,如果我输入:
f f f
它说它太短了。和
f
d
通过。我已经尝试添加“g”标志,并使用^和$围绕正则表达式。
感谢您提供任何提示
答案 0 :(得分:1)
您的正则表达式匹配3个后续非空白字符。
以下匹配3个非空白字符,由任何内容分隔:
/(\S.*){3,}/
要跨多行执行验证,请添加s
修饰符:
/(\S.*){3,}/s
您还应该在>强调mysql_real_escape_string
之前进行验证。在您的示例中,第二个字符串首先转换为f\r\nd
或f\nd
。它现在包含3个后续的非空格字符!如您所见,这会搞砸验证。