繁体   English   中英

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

[英]How can I Accept only letter, number, comma (,) and dot (.) using php

我想使用以下正则表达式只接受字母,数字,逗号和点。 如果我使用$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";

你需要包括. 在你的角色类中并反转你的if条件检查:

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

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

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

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

尝试这个 :

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

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

在捕获组中添加空间

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

它应该工作正常

DEMO

你错过了一个空间. , 试试吧:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM