增强正则表达式以验证电话号码

时间:2011-09-03 16:17:44

标签: java regex

我创建了一个正则表达式,用于验证具有以下要求的电话号码:

  • 允许的字符:+ space ( ) – 0-9

  • +(可以是(+61) 312 405 678+61 312 405 678之后的第一个字符。

  • 允许在数字的任何位置使用短划线。

  • 长度最小值8最大值16 - 在边界条件情况下显示错误

但我需要加强它。我想验证如果+在数字中,它必须只在开头但我的正则表达式不检查这个。请帮忙。到目前为止这是我的正则表达式:

^[\\(?\\+?(\\d{2})\\)?[- ]?(\\d{0,})[- ]?(\\d{0,})[- ]?(\\d{0,})]{9,16}$

2 个答案:

答案 0 :(得分:1)

在开头添加\ + {0,1}应该可以解决问题。

完成的正则表达式看起来像这样

^\+{0,1}[\(?\+?(\d{2})\)?[ -]?(\d{0,})[- ]?(\d{0,})[- ]?(\d{0,})]{9,16}$

答案 1 :(得分:0)

我会丢弃所有可选字符,然后检查它是否与\\+?\\d{8,16}匹配。

或者,允许在任何地方任意数量的标点符号; [\\s().-]*(\\+[\\s().-]*)?(\\d[\\s().-]*){8,16}