我创建了一个正则表达式,用于验证具有以下要求的电话号码:
允许的字符:+ space ( ) – 0-9
+
或(
可以是(+61) 312 405 678
或+61 312 405 678
之后的第一个字符。
允许在数字的任何位置使用短划线。
长度最小值8最大值16 - 在边界条件情况下显示错误
但我需要加强它。我想验证如果+
在数字中,它必须只在开头但我的正则表达式不检查这个。请帮忙。到目前为止这是我的正则表达式:
^[\\(?\\+?(\\d{2})\\)?[- ]?(\\d{0,})[- ]?(\\d{0,})[- ]?(\\d{0,})]{9,16}$
答案 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}
。