1

我有以下 Java 应用程序的正则表达式:

[\+0-9]+([\s0-9]+)?

如何将上述电话号码的表达限制为最少4位,最多7位?我认为这类似于将 {4,7} 添加到表达式中,但它不起作用。

请问有什么建议吗?

基本上,我的电话号码可以以 + 号开头,后跟数字(+004...)或仅数字(004...),也可以在任何数字之间包含空格(0 0 4...)。

4

3 回答 3

6

你可以试试这个正则表达式:

[+]?(?:[0-9]\s*){4,7}

解释:

[+]?           // Optional + sign
(?:[0-9]\s*)   // A single digit followed by 0 or more whitespaces
{4,7}          // 4 to 7 repetition of previous pattern

样本测试:

String regex = "[+]?(?:[0-9]\\s*){4,7}";

System.out.println("0045234".matches(regex));       // true
System.out.println("+004 5234".matches(regex));      // true
System.out.println("+00 452 34".matches(regex));    // true
System.out.println("0 0 4 5 2 3 4".matches(regex)); // true
System.out.println("004523434534".matches(regex));  // false
System.out.println("004".matches(regex));           // false
于 2013-08-09T10:02:38.043 回答
2

"\\+?(\\d ?){3,6}\\d"应该匹配一个可选的 + 符号,后跟 4-7 个数字和数字之间的可选空格。

于 2013-08-09T10:08:34.550 回答
0

与上面类似的结构,但有:(:? taken off不知道为什么会在那里?)

[+]?([0-9]\s*){4,7}
于 2013-08-09T13:33:04.873 回答