Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式工作不正常_Php_Regex - Fatal编程技术网

Php 正则表达式工作不正常

Php 正则表达式工作不正常,php,regex,Php,Regex,在这里,我试图写一个正则表达式来验证我自己认为的电话号码。 代码如下所示 $hai = "+458745555---55"; if (!preg_match("/^[\+]{0,1}[0-9\s(\-){0,2}]{6,15}$/", $hai)) { $valPhone = "Invalid phone number"; } else { $valPhone = "Valid phone number"; } echo $valPhone; 规则: 1.字符串前面可能出现“

在这里,我试图写一个正则表达式来验证我自己认为的电话号码。 代码如下所示

$hai = "+458745555---55";
if (!preg_match("/^[\+]{0,1}[0-9\s(\-){0,2}]{6,15}$/", $hai)) {
    $valPhone = "Invalid phone number";
} else {
    $valPhone = "Valid phone number";
}

echo $valPhone;
规则:

1.字符串前面可能出现“+”符号

2.剩余和-中只能有数字、、、空格,且应介于0-2之间

3.不包括“+”的字符串的最大长度为6-15

4.如果找到“+”号,则无法添加剩余字符串的空格开始和结束


但是“-”的情况对我来说不太好。如果有任何帮助,我将不胜感激

此正则表达式完成以下工作:

(?=^\+?[^+]{6,15}$)(?!(?:.*-.*){3,})^\+?\d[\d -]+\d$
详情:

  • (?=^\+?[^+]{6,15}$)
    整个字符串长度为6到15个字符,
    +
    是可选的
  • (?!(?:.-.*){3,})
    不能超过2个
    -
  • ^\+?\d[\d-]+\d$
    字符串将只包含数字、空格和
    -

请参见

请向我们展示您希望使用的电话号码格式示例find@Webeng+9578895658,+2770259669,+91487-2589589,“-”符号的可能性应最大为2,并且空格没有任何限制。在字符类中不可能使用量词,因此[0-9\s(\-){0,2}匹配其中的任何文字字符,因此
0-9
\s
-
{
}
。工作正常..如果有“+”号,剩余字符串的最小长度应为6。+5645有效,5645无效,最小数字长度为6而不是5。谢谢..托马斯·阿尤布..工作正常..我有一个疑问..我们如何限制剩余{6,15}的起始位置和结束位置之间的空格字符串?是..除了“+”符号外,我需要以数字开头,在这两个空格之间是可能的。。