正式表达印度手机号码

时间:2011-05-09 18:27:25

标签: regex

我想找到一个文件中的所有电话号码,我需要RegEx用于此

有效格式:

+91 9916075509
+91-9916075509
+919916075509
9916075509

此外,它应该能够在电话号码之前和之后处理空间,我在Google中找到的大部分RegEx都无法处理空间。

如果有人帮助我,我将不胜感激!

4 个答案:

答案 0 :(得分:6)

我会用这样的东西:

^(\+91[\-\s]?)?[89]\d{9}$

说明:

^ - beginning of the string
   (\+91[\-\s]?)? - matches optional ISD code with optional - or whitespace inbetween
   [89]  - last I checked Indian mobile numbers begin with 8 or 9
   \d{9} - followed by 9 digits ( total of 10 )
$ - end of string

答案 1 :(得分:1)

我想这样的事情:

[ ]*\+9(1[ -]?[0-9]{10}|9[0-9]{8})[ ]*

答案 2 :(得分:1)

通过python

>>> import re
>>> txt = r'   +91 9916075509,+91-9916075509, +919916075509, 9916075509  '
>>> r = re.findall(r'(?:\+?\d{2}[ -]?)?\d{10}', txt)
>>> r
['+91 9916075509', '+91-9916075509', '+919916075509', '9916075509']
>>>

编辑:

这是另一个将处理任意间距和连字符的方法:

(?:\+\s*\d{2}[\s-]*)?(?:\d[-\s]*){10}

接受可选的前导+后跟2位数字,然后匹配由任意数量的连字符或空格分隔的任何连续的10位数组。下面的字符串都是有效的例子。

000-000 0000
000-0 00-0 00-0
+00 0000000000
+00 000-000 0000
+00-000-000-0000
+ 00-000-0 00-0 00-0

我不知道印度手机号码有什么其他限制(例如必须以9开头等),但你应该能够通过用静态数字代替{来改变正则表达式来包含那些{1}}占位符。

答案 3 :(得分:0)

我会从这样的事情开始

/\+91-?[ \d]/

这将寻找带有可选项的+91,后跟数字或空格。

当你在文件中找到电话号码时,我不想太严格。

如果您收到任何不需要的匹配项,请在[]中添加更多字符类。

相关问题