我想找到一个文件中的所有电话号码,我需要RegEx用于此
有效格式:
+91 9916075509
+91-9916075509
+919916075509
9916075509
此外,它应该能够在电话号码之前和之后处理空间,我在Google中找到的大部分RegEx都无法处理空间。
如果有人帮助我,我将不胜感激!
答案 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,后跟数字或空格。
当你在文件中找到电话号码时,我不想太严格。
如果您收到任何不需要的匹配项,请在[]中添加更多字符类。