[英]How can I replace dot with comma but only for numbers in a string ? (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";
它应该工作正常
你错过了一个空间.
, 试试吧:
if(preg_match("/^[\d\w\s\.]+$/", $string) == 0)
echo "Invalid data";
else
echo "Valid data";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.