正则表达式接受带或不带空格的电话号码,也可带或不带+

时间:2015-02-21 06:07:18

标签: java regex

我必须写正则表达式接受带或不带空格的电话号码,也可以带或不带+

以下是示例:

 + 01 917 1231234 
 +019171231234
 01 917 123 1234
 019171231234

谢谢, MK

3 个答案:

答案 0 :(得分:1)

^\+?[\d ]+

^从一开始就是 \+?检查加号,但不需要它 [\d ]+检查数字和空格
你也可以用

[\d ]{lower_limit,upper_limit} 

接受较低和较高字符数量

答案 1 :(得分:1)

您可以先删除所有空格,然后使用正则表达式进行验证:

\+{0,1}\d{12}

示例:

String phoneNo = "+ 01 917 1231234";
String patternString = "\\+{0,1}\\d{12}";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(phoneNo.replaceAll("\\s+",""));
boolean isValid = matcher.matches();
System.out.println(isValid);

检查Demo here

答案 2 :(得分:0)

您可以尝试下面的正则表达式。

"^\\+?(?:\\s*\\d){12}\\s*$"
  • ^断言我们刚开始。
  • \\+?匹配可选的+符号。
  • \\s*\\d匹配零个或多个空格字符和一个数字。而这种模式将重复12次。所以我们得到了第12位的比赛。
  • \\s*零个或多个空格。
  • $行锚点结束。

matches函数不需要锚定的正则表达式。

string.matches("\\+?(?:\\s*\\d){12}\\s*");