javascript - 手机号码的正则表达式,在某些条件下验证电话号码
问题描述
我想在正则表达式中验证手机号码和电话号码。所以正则表达式应该通过以下所有规则
必须至少有 5 个数字。
+,(),-,# 等特殊字符只能使用一次
开括号和闭括号应该相互存在,即,如果使用开括号,则必须强制关闭
最大数量应为 20。
所以为了做到这一点,我添加了这段代码。
//validate phone
function validatePhone( phone ) {
var regex = /^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i;
return regex.test( phone );
}
但它并没有验证所有条件。
更新 它应该接受所有这些电话号码
(+355)250235
+91 123456789012
(+355) 250-236-236-789
(+355) 2502-3656-1236-8789
+920123456789012345987
(+355) 250235 #10
解决方案
您可以断言至少 5 位而不是 21 位。
然后匹配带或不带括号的部分,并可选择匹配末尾带有# 的部分。
^(?=(?:[^\n\d]*\d){5})(?!(?:[^\n\d]*\d){21})(?:\(\+?\d+\)|\+?\d+) ?\d+(?:-\d+)*(?: ?#\d+)?$
推荐阅读
- android - Android-Jetpack-Compose @Composable 注解错误
- javascript - 更改 div 显示时提交的表单
- javascript - React Material UI 分页
- mongodb - 嘿伙计们,关于压缩选项的一些问题
- facebook-graph-api - 让用户通过 Instagram 传记验证他们的帐户
- javascript - 无法在反应中使用道具在组件之间传递值?
- postgresql - 读取 .json 以使用 Docker-Compose 初始化我的 Postgresql 容器
- docker - 我如何对接已经构建的 rasa 项目?
- reactjs - 刷新页面时如何保留 id?
- php - Wordpress 如何删除 wp_get_available_translations?