0

我有一个文本区域。我正在尝试检查它是否在 javascript 中包含至少 3 个非空白字符,如果包含,我需要重新检查在 php.ini 中发布的消息。

我想一旦我让它在 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”标志,并在正则表达式周围使用 ^ 和 $。

感谢您的任何提示

4

1 回答 1

1

您的正则表达式匹配 3 个后续的非空白字符。

以下匹配 3 个非空白字符,由任何字符分隔:

/(\S.*){3,}/

要跨多行执行验证,请添加s修饰符:

/(\S.*){3,}/s

您还应该在调用之前mysql_real_escape_string进行验证。在您的示例中,第二个字符串被转换为f\r\ndf\nd首先。它现在包含 3 个后续的非空白字符!如您所见,这搞砸了验证。

于 2009-06-20T15:16:43.383 回答