public static boolean validateState (String state)
{
return state.matches( "[1-9]\\d{2}-[1-9]\\d{4}" ) ;
}
为什么这个函数在连字符前有3位数,在连字符后有5位数,当我在括号中放入2和4时?请帮助..
答案 0 :(得分:3)
在两种情况下都删除[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}