如何设置电子数字的正则表达式中允许的最小和最大位数

时间:2013-08-09 10:00:10

标签: java regex matcher

我为java应用程序提供了以下Regex表达式:

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

如何将上述电话号码的表达限制为最少4位数,最多7位数?我认为这可能就像在表达式中添加{4,7}一样,但它不起作用。

请问任何建议?

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

与上面类似的结构,但是::? taken off(不确定为什么会出现?)

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