3 回答
TA贡献1830条经验 获得超3个赞
允许使用简单的邮政编码(例如 12345)并强制规定,如果找到可接受的分隔符(空格、逗号、管道),它必须以四位数字结尾,这个正则表达式就足够了。
[0-9]{5}(?:[-,| ][0-9]{4})?
TA贡献1794条经验 获得超8个赞
我不知道您所在国家/地区的确切邮政编码规则,但此代码段将帮助您入门:
// define the pattern - should be defined as class field
// instead of + you could use {3,5} to match min. 3, max. 5 characters - see regular expressions manual
private static final Pattern PATTERN_ZIP = Pattern.compile("^[0-9A-Z]+[ \\-\\|]?[0-9A-Z]+$");
String zip = "1A2-3B4C5";
// Optional: let's make some text cleaning
String cleanZip = zip.toUpperCase().trim();
// Do the mat(c)h
Matcher m = PATTERN_ZIP.matcher(cleanZip);
if (m.find()) {
System.out.println("Zip code correct");
} else {
System.out.println("Zip code incorrect");
}
TA贡献1829条经验 获得超4个赞
您不需要负前瞻,您可以使用字符类 ( []
) 代替|
运算符,并且您希望使用^
和$
来表示字符串的开头和结尾。像这样:
"34343-1232".matches("^[0-9| -]+$")
添加回答
举报