php - 正则表达式工作不正常

标签 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.我们无法在剩余字符串的开头和结尾添加空格,如果找到则不包括“+”符号

但是 '-' 的情况对我来说效果不佳。任何帮助将不胜感激..

最佳答案

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

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

详细信息:

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

参见 demo

关于php - 正则表达式工作不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37452798/

相关文章:

javascript - PHP文件返回整个文件

python - 正则表达式在文件中搜索确切的字符串

javascript - Meteor.js 安全地嵌入 iframe

c++ - boost 正则表达式捕获

javascript - 替换大括号内且未用引号引起来的字符

php - Yii 2.0 - 输入值在数据库中保存为 null

php - 在 PHP 中显示 404 页面的正确方法?

php - 从购物车内容获取帖子 ID

php - 如何进行通知

PHP preg_match 维度