以下正则表达式(请参阅代码段)将满足以下所有四个条件:
我需要包含第5个条件,即123456789(因此,仅9个数字,没有空格)我试图将当前正则表达式更改为此^ [0-9] {5}(_ | - | \ s){0,1} | [0-9] {4}但这不起作用
public static boolean isZipCodeValid(String zipcode) {
return zipcode.matches("^\\d{5}(?:[-_\\s]\\d{4})?$");
}
答案 0 :(得分:0)
答案 1 :(得分:0)
尝试分解你的表达,应该更容易看到:
如果你将它转换为正则表达式,你应该得到类似的东西(我还包括非0的第一位数字):
[1-9]\d{4}
(x\d{4})?
- 这是可选的?
)组((...)
),x
是占位符。现在翻译"要么是3个字符,要么是#34;到表达式,你得到[-_ ]?
。 (请注意,我将\s
替换为空格,因为\s
包含制表符和其他空格。如果你把这一切都归结为[1-9]\d{4}([-_ ]?\d{4})?
。
旁注:\d
也匹配其他数字,例如阿拉伯语。您可能希望改为使用[0-9]
。