1

用户应该输入国际格式的电话号码,它应该始终以 + 开头,并且没有任何特殊字符,例如 +3162503277。

我认为这个简单的正则表达式会做到这一点,但不知何故我一定错过了一些东西,因为它不接受电话号码:

if (!preg_match('/^\+?[0-9]{6}$/i', $phone)) 
    fail("Invalid phone number");

检查数字是否以+开头并且仅包含数字的方法应该是什么?

4

1 回答 1

5

?在之后附加\+使+可选。

[0-9]{6}$仅匹配 6 位数字。要匹配更多数字,您必须使用+istead of {6}。如果您想要 6 位或更多位,请使用{6,}.

尝试以下操作:

if (!preg_match('/^\+\d+$/', $phone)) 
    fail("Invalid phone number");
于 2013-09-18T18:24:31.570 回答