【发布时间】:2021-05-22 08:18:43
【问题描述】:
我想在正则表达式中验证手机号码和电话号码。所以正则表达式应该通过以下所有规则
-
必须至少有 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
【问题讨论】:
-
仅供参考,Google 有一个 非常 全面的跨国电话号码验证库,您可以使用它:github.com/google/libphonenumber/tree/master/javascript/i18n/…
-
@RoryMcCrossan 感谢您提供的网址,但我们不能使用正则表达式来做到这一点吗?
-
你能用一些例子更新这个问题吗?
-
@Jobelle 我已经更新了我的问题。请检查。
-
@NewUser 可能像这样
^(?=(?:[^\n\d]*\d){5})(?!(?:[^\n\d]*\d){21})(?:\(\+\d+\)|\+\d+) ?\d+(?:-\d+)*$regex101.com/r/EfsEqq/1 注意这个例子+920123456789012345987有21 个数字。
标签: javascript jquery regex