我正在尝试对手机号码进行验证检查,有点类似于gmail实施的内容。
但是,不同国家/地区的电话号码差异很大,因此很难为此制作正则表达式。
我在这里查看了一些q,但它们适用于某个国家或某个国家, 请提一下,如果我错过了。
主要是我想实现gmail用手机号码做的事情。
答案 0 :(得分:4)
在您提供的页面中,Google使用ajax检查这些电子邮件。 查看请求内容:
{"input01":{"Input":"RecoveryPhoneNumber","RecoveryPhoneNumber":"+44 12345678","RecoveryPhoneCountry":"GB"},"Locale":"pl"}
我的猜测是他们没有任何神奇的普遍正则表达式 - 他们可能拥有整个正则表达式数据库 - 每个国家/地区都匹配电话号码。我的猜测是你也可以这样做,但你必须努力创建这样的数据库(如果没有人这样做过)。
你也可以欺骗自己的方式并尝试连接到他们的ajax服务,并自己向他们的检查器发出请求。这将是一种简单的方法,但实际上并不可靠,甚至可能不合法。
编辑:有很多页面可以找到示例。困难的部分是收集所有正则表达式。
答案 1 :(得分:2)
不知道您是否编写了自己的lib用于手机号码验证,但现在我们已经libphonenumber了。它确实由Google提供,允许您验证,解析和格式化电话号码。它适用于Java,c ++或Javascript,但也有fork for PHP。
此时,要在Google的注册页面上实现类似于表单的内容,您需要将lib与某些编码输入连接(以提供标记和国家/地区代码供您选择)。 intl-tel-input专为此而设计。基本上是:
用于输入和验证国际电话的jQuery插件 数字。它为任何输入添加了一个标记下拉列表,列出了所有输入 国家及其旗帜旁边的国际拨号代码。
它使用了上面提到的Google的libphonenumber。所以,遗漏你的正则表达:D
答案 2 :(得分:1)
对于国际手机号码,请使用以下验证。
<强> ^ + \ d {1,5} \ d {6,11} $ 强>
(+)符号 - 是强制性的
d {1,5} - 对于ISD代码
d {6,11} - 电话号码
但如果用户输入了91(INDIA)ISD CODE并输入了6位数的手机号码, 它将被验证为有效号码。
印度手机号码可以通过 ^ + 91 \ d {10} $
查看使用jquery(二维数组)而不是正则表达式。 因为有更多的ISD-Number组合。
要验证它,首先检查输入的ISD代码(数组项的第一个elemnet并与移动数字长度(数组项中的第二个元素)进行比较,
这样你就可以获得存储在第二项数组中的每个isd代码的移动数字长度。
我们可以为多个国家/地区执行此操作,并且将来也可以配置。
答案 3 :(得分:0)
巨人正在制作正确的正则表达式,但是在将国家代码放在他们的数据库之后 您可以通过他们的代码找到它,以了解它们如何构建国家/地区代码和标记
"in":{code:"91",name:"India",imgPosition:"-1694px"},id:{code:"62",name:"Indonesia",imgPosition:"-1958px"},ir:{code:"98",name:"Iran",imgPosition:"-2013px"},iq:{code:"964",name:"Iraq",imgPosition:"-649px"},ie:{code:"353",name:"Ireland",imgPosition:"-1969px"},