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