我必须写正则表达式接受带或不带空格的电话号码,也可以带或不带+
以下是示例:
+ 01 917 1231234
+019171231234
01 917 123 1234
019171231234
谢谢, MK
答案 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);
答案 2 :(得分:0)
您可以尝试下面的正则表达式。
"^\\+?(?:\\s*\\d){12}\\s*$"
^
断言我们刚开始。\\+?
匹配可选的+
符号。\\s*\\d
匹配零个或多个空格字符和一个数字。而这种模式将重复12次。所以我们得到了第12位的比赛。\\s*
零个或多个空格。$
行锚点结束。 matches
函数不需要锚定的正则表达式。
string.matches("\\+?(?:\\s*\\d){12}\\s*");