我怎样才能使用php接受字母,数字,逗号(,)和点(。)

时间:2014-10-23 08:18:23

标签: php regex

我想使用以下正则表达式只接受字母,数字,逗号和点。如果我使用$string它表示无效数据,但如果我使用$string2则表示有效数据。

1)为什么$string不接受有效数据?我错过了什么?

2)如果我接受逗号,我怎么能逃脱它?使用mysqli_real_escape_string?如果是这样的话,当我从Db显示它时它会显示反斜杠。请帮忙。谢谢。

$string = "I m a good boy";
$string2 = "Imagoodboy";

if(preg_match("/^[a-zA-Z0-9]+$/", $string) == 0)
    echo "Invalid data";
else
    echo "Valid data";

4 个答案:

答案 0 :(得分:2)

您需要在角色类中加入.,并在条件检查中反向

if(preg_match('/^[a-zA-Z0-9.]+$/', $string))
    echo "valid data";
else
    echo "InValid data";

同样$string也有空格,并且空格不在允许的字符列表中,这就是它失败的原因。如果你想包含空格也可以使正则表达式为:

/^[a-zA-Z0-9. ]+$/

答案 1 :(得分:1)

First String包含空格。根据你的正则表达式,空格无效。要验证$ string,你必须在正则表达式中创建有效的空格。

试试这个:

preg_match("/[^a-zA-Z0-9., ]/",$string);
                          ^
                        Space

答案 2 :(得分:0)

我认为问题来自$ string中的空格。

在捕获组中添加空格

if(preg_match("/^[a-zA-Z0-9. ]+$/", $string) == 0)
    echo "Invalid data";
else
    echo "Valid data";

它应该可以正常工作

DEMO

答案 3 :(得分:0)

你错过了一个空格.,试试看:

if(preg_match("/^[\d\w\s\.]+$/", $string) == 0)
    echo "Invalid data";
else
    echo "Valid data";