目标是验证一个数字的数字,可能包含也可能不包含空格。
例如,'1800 123 456'和'1800123456'均可接受。
检查它是否不是数字很容易:
if(!is_numeric($phone_number)) {
//display error message
}
但我对如何用空格传递感到困惑。
有人能够指出我正确的方向吗?
答案 0 :(得分:3)
不用空格检查:
<?php
if(!is_numeric(str_replace(" ", "", $phone_number))) {
//display error message
}
或者,如果你想要正则表达式的开销:
<?php
if (preg_match("/[^0-9 ]/", $phone_number)) {
//display error message
}
答案 1 :(得分:0)
正则表达式: ^[\d]{4}\s+[\d]{3}\s+[\d]{3}|[\d]{10}$
[\d]{4}\s+[\d]{3}\s+[\d]{3}
示例:格式1800 123 456
[\d]{10}
示例:格式1800123456
<?php
ini_set('display_errors', 1);
$phone_number='1800 123 456';
if(preg_match("/^[\d]{4}\s+[\d]{3}\s+[\d]{3}|[\d]{10}$/",$phone_number))
{
echo "matched";
}
else
{
echo "not matched";
}
答案 2 :(得分:0)
您可以使用以下检查:
//eliminate every char except 0-9
$justNums = preg_replace("/[^0-9]/", '', $string);
//eliminate leading 1 if its there
if (strlen($justNums) == 11) $justNums = preg_replace("/^1/", '',$justNums);
//if we have 10 digits left, it's probably valid.
if (strlen($justNums) == 10) $isPhoneNum = true;