印度电话号码和手机号的正则表达式验证

25

我想验证印度的电话号码和手机号码。电话号码和手机号码的格式如下:

固定电话号码格式:

03595-259506
03592 245902
03598245785

手机号码

9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389

我希望将正则表达式写成一个表达式。我尝试了以下的正则表达式,但它不能正常工作。

{^\+?[0-9-]+$}
14个回答

23

固定电话号码

03595-259506
03592 245902
03598245785

您可以使用此功能

\d{5}([- ]*)\d{6}

全新推出,适用于所有人 ;)

OLD: ((\+*)(0*|(0 )*|(0-)*|(91 )*)(\d{12}+|\d{10}+))|\d{5}([- ]*)\d{6}
NEW: ((\+*)((0[ -]*)*|((91 )*))((\d{12})+|(\d{10})+))|\d{5}([- ]*)\d{6}

9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389

03595-259506
03592 245902
03598245785

这个网站对我很有用,也可能对你有帮助。;)http://gskinner.com/RegExr/


当我在JS中使用这个正则表达式时,它显示错误“无效的正则表达式:/^((+)((0[ -])|((91 )))((d{12})+|(d{10})+))|d{5}([- ]*)d{6}$/: Nothing to repeat”。你能帮我解决一下吗? - Tapendra kumar

17

请使用以下正则表达式

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

这将支持以下格式:

  1. 8880344456
  2. +918880344456
  3. +91 8880344456
  4. +91-8880344456
  5. 08880344456
  6. 918880344456

1
@Ajay 更新正则表达式为:^(+91[-\s]?)?(\91[-\s]?)?[0]?(91)?[123456789]\d{9}$,以验证 91-8883044456 是否符合要求。 - Rithesh Rao

10

这个运作得非常好:

\+?\d[\d -]{8,12}\d

匹配项:

03598245785
9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389
987-98723-9898
+91 98780 98802
06421223054
9934-05-4851
WAQU9876567892
ABCD9876541212
98723-98765

不匹配:

2343
234-8700
1 234 765

这个正则表达式也接受这些数字: (@5094 10574 - M.J

7

针对手机号码:

const re = /^[6-9]{1}[0-9]{9}$/;

这似乎是相对于被接受的答案一个有用的补充,后者仅适用于固定电话格式。但是,为什么它比例如@parth的答案更受欢迎,后者声称支持固定电话和移动电话格式? - Jeremy Caney
此外,添加您评估的测试用例将非常有用,就像其他答案所做的那样,以帮助展示它将覆盖的格式范围。 - Jeremy Caney

5
我在我的 Python 项目中使用以下内容:
正则表达式
(\+91)?(-)?\s*?(91)?\s*?(\d{3})-?\s*?(\d{3})-?\s*?(\d{4})

Python使用方法
re.search(re.compile(r'(\+91)?(-)?\s*?(91)?\s*?(\d{3})-?\s*?(\d{3})-?\s*?(\d{4})'), text_to_search).group()

解释/说明
(\+91)? // optionally match '+91'
(91)?   // optionally match '91'
-?      // optionally match '-'
\s*?    // optionally match whitespace
(\d{3}) // compulsory match 3 digits
(\d{4}) // compulsory match 4 digits

测试并且适用于。
9992223333
+91 9992223333
91 9992223333
91999 222 3333
+91999 222 3333
+91 999-222-3333
+91 999 222 3333
91 999 222 3333
999 222 3333
+919992223333

更新你的答案:(\+91)?(-)?\s*?(91)?\s*?([6-9]{1}\d{2})-?\s*?(\d{3})-?\s*?(\d{4})。印度的电话号码以6、7、8或9开头。 - GOKU

4
针对移动和固定电话号码都适用的正则表达式:(?:\s+|)((0|(?:(\+|)91))(?:\s|-)*(?:(?:\d(?:\s|-)*\d{9})|(?:\d{2}(?:\s|-)*\d{8})|(?:\d{3}(?:\s|-)*\d{7}))|\d{10})(?:\s+|)
(?:\s+|)                    // leading spaces
((0|(?:(\+|)91))            // prefixed 0, 91 or +91
(?:\s|-)*                   // connecting space or dash (-)
(?:(?:\d(?:\s|-)*\d{9})|    // 1 digit STD code & number with connecting space or dash
(?:\d{2}(?:\s|-)*\d{8})|    // 2 digit STD code & number with connecting space or dash
(?:\d{3}(?:\s|-)*\d{7})|    // 3 digit STD code & number with connecting space or dash
\d{10})                     // plain 10 digit number
(?:\s+|)                    // trailing spaces

我已经在以下文本上进行了测试

9775876662
0 9754845789
0-9778545896
+91 9456211568
91 9857842356
919578965389

0359-2595065
0352 2459025
03598245785
07912345678
01123456789
sdasdcsd
+919898101353
dasvsd0 
+91 dacsdvsad
davsdvasd

0112776654

0

您可以实现以下正则表达式 regex = '^[6-9][0-9]{9}$'


0

印度所有手机号码都以9、8、7或6开头。现在,如果您不关注前缀(+91或0),那么您可以从网站regextester.com获取帮助,或使用r'^(+91[-\s]?)?[0]?(91)?[789]\d{9}$'

如果您想验证带有前缀(+91或0)的电话号码,请使用:r'^[6-9]\d{9}$'


0
你可以像这样使用正则表达式。

/^[(]+\ ++\d{2}[)]+[^0]+\d{9}/


1
这个匹配 ((((((((( 12)))))))))))))))))))))))))*$ù^^<q!§à@çè"é """123456789jsqfh khe alkjlkjrh erj kjhklerjaht lekjarhtlkjrt 不确定是否是一个有效的电话号码。 - Toto

0
r'\+?(91?|0?)[\-\s]?[3-9]\d{3}[\-\s]?\d{6}$'

解释

  1. +? # 以加号开头或不以加号开头
  2. (91?|0?) # 后跟91、0或两者都不跟
  3. [-\s]? # 后跟-、空格或两者都不跟
  4. [3-9] # 后跟3到9中的任意数字
  5. \d{3} # 后跟任意三个数字
  6. \d{6} # 后跟任意六个数字
  7. $ # 指定字符串应在该点停止

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接