我在这里尝试编写一个正则表达式来验证我自己意义上的电话号码。 代码如下
$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/