Java {n}中的Quantifier采用n + 1输入

时间:2014-07-15 13:50:47

标签: java regex quantifiers

public static boolean validateState (String state)
{
return state.matches( "[1-9]\\d{2}-[1-9]\\d{4}" ) ;
}

为什么这个函数在连字符前有3位数,在连字符后有5位数,当我在括号中放入2和4时?请帮助..

2 个答案:

答案 0 :(得分:3)

在两种情况下都删除[1-9]。你真的想要匹配:

  • 一个数字(1-9),然后是
  • 两位数,然后是
  • 连字符,然后是
  • 一个数字(1-9),然后是
  • 四位数

或者更简洁地说:[0-9]相当于\\d

您可能需要[1-9]\\d-[1-9]\\d{3}\\d{2}-\\d{4}

答案 1 :(得分:1)

对于您提供的RegEx“[1-9] \ d {2} - [1-9] \ d {4}”


a)[1-9]接受一位数
b)d {2}接受两位数

因此,它完全接受3位数字(在连字符之前,即“[1-9] \ d {2}”部分)。

同样,连字符后也会接受4位数字。

您可能想要使用以下任何一项:
1)\ d {2} - \ d {4}
2)[1-9] \ d {1} - [1-9] \ d {3}