public static boolean validateState (String state)
{
return state.matches( "[1-9]\d{2}-[1-9]\d{4}" ) ;
}
为什么这个函数在连字符之前需要3个数字,在连字符之后需要5个数字,当我把2和4放在括号里时?请帮助. .
在这两种情况下都删除[1-9]
。你实际上是在尝试匹配:
- 一个数字(1-9),后面跟着
- 两位数字,后面跟着
- 一个连字符,后面跟着
- 一个数字(1-9),后面跟着
- 四位数
或者更简洁地说:[0-9]
等价于\d
。
您可能需要[1-9]\d-[1-9]\d{3}
或\d{2}-\d{4}
。
对于您提供的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}