正则表达式工作不正常

时间:2016-05-26 06:06:41

标签: 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.可能会来#+;'在字符串前面签名

2.只有数字, - ,剩余空间, - 应介于0-2之间

3.最大字符串长度,不包括' +'将是6-15

4.我们无法添加剩余字符串的空格开头和结尾,不包括' +'签字如果找到了

但是' - '对我来说效果不错。非常感谢任何帮助..

1 个答案:

答案 0 :(得分:2)

这个正则表达式完成了工作:

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

详细说明:

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

请参阅demo