[英]regex phone number validation with PHP
这是我昨天问的先前问题的另一个问题。 我希望允许用户以以下格式键入美国电话号码。
(800)-555-1212
800-555-1212
并只检查数据库中的号码8005551212
我已经看到正则表达式如/^[\\+]?([0-9]*)\\s*\\(?\\s*([0-9]{3})?\\s*\\)?[\\s\\-\\.]*([0-9]{3})[\\s\\-\\.]*([0-9]{4})[a-zA-Z\\s\\,\\.]*[x\\#]*[a-zA-Z\\.\\s]*([\\d]*)/
可能有效,但我不确定如何从我提供的链接中将其实现到代码中
我是php新手,对regex一无所知。 任何帮助表示赞赏。
此功能验证电话号码,如果验证有效,则返回true;如果无效,则返回false。 这个功能非常简单,我被写到了。
/**
* @param $number
*
* @return bool
*/
function validatePhoneNumber($number) {
$formats = [
'###-###-####', '####-###-###',
'(###) ###-###', '####-####-####',
'##-###-####-####', '####-####', '###-###-###',
'#####-###-###', '##########', '#########',
'# ### #####', '#-### #####'
];
return in_array(
trim(preg_replace('/[0-9]/', '#', $number)),
$formats
);
}
如果javascript没问题,可以使用
<script type="text/javascript">
function matchClick() {
var re = new RegExp("Your regex here");
if (document.formname.phone.value.match(re)) {
alert("Ok");
return true;
} else {
alert("Not ok");
return false;
}
}
</script>
在表单的提交或文本框的模糊处理中调用此函数
如果您对自己的正则表达式有疑问,可以在http://www.regular-expressions.info/javascriptexample.html上进行验证
您可以使用此模式
\\(?\\d{3,3}\\)?-\\d{3,3}-\\d{4,4}
尝试这个,
<?php
$t='/\(?[2-9][0-8][0-9]\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}/';
$arr=preg_match($t,'(800)-555-1212',$mat);
$arr=preg_match($t,'800-555-1212',$mat);
print_r($mat);
?>
在这里测试
回复:Rohan Kumar的解决方案
<?php
$t='/\(?[2-9][0-8][0-9]\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}/';
$arr=preg_match($t,'(800)-555-1212',$mat);
$arr=preg_match($t,'800-555-1212',$mat);
print_r($mat);
?>
它确实解决了假电话号码(例如800-123-2222)的问题。 真实电话号码的第一位数字至少为“ 2”。 尽管其他解决方案正确地设置了格式,但它们不能解决人们输入电话号码(例如800-000-1234)的问题,这在所提供的其他解决方案中是正确的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.