preg_match模式检查该字符串是否只包含字母,空格和点

时间:2014-04-21 18:39:18

标签: php preg-match

下面的代码显示了一种检查名称字段是否只包含字母和空格的简单方法。如果name字段的值无效,则存储错误消息:

$name = test_input($_POST["name"]);
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$nameErr = "Only letters and white space allowed"; 
}

我的问题是如何在这里添加点(。)?

3 个答案:

答案 0 :(得分:2)

交换此行:

if (!preg_match("/^[a-zA-Z ]*$/",$name))

这一行:

if (!preg_match("/^[a-zA-Z\. ]*$/", $name))

您必须转义.字符,因为它在正则表达式中具有特殊含义。

答案 1 :(得分:1)

$pattern = "/^[a-zA-Z \.]*$/";

答案 2 :(得分:1)

您可以随时添加。在方括号中。例如,表达式[a-zA-Z。]是正确的,它将为您提供所需的内容,即要检查的字符列表。如果你想检查。在[]之外然后逃脱了。喜欢 。此外,您的代码不会检查哪些是空格。所以你应该添加\ s而不是''。同样有很多其他特殊字符,如?这将被视为[]括号中的正常字符。一个例外是 - 必须始终在末尾添加,即[A-Z? - ]。但是仍然有一些必须转义的特殊字符,例如“'/。我的建议是先在线运行表达式,然后再将其插入代码中。正则表达式错误很常见,很难找到。你的表达式应该是: -

 $name = test_input($_POST["name"]);
 if (!preg_match("/^[a-zA-Z.\s]+$/",$name)) {
 $nameErr = "Only letters and white space allowed"; 
 }

干杯!