我的数据库中有地址信息和一些垃圾,我必须检查字符串是否有我需要处理的邮政编码。你能解释一下如何检查一个字符串是否有5位数字。例如,
String addr = 10100 Trinity Parkway, 5th Floor Stockton, CA 95219;
因此它必须与此字符串匹配,因为它具有5位数的邮政编码。有没有办法使用Java Regular Expression进行检查?
更新
String addr = "10100 Trinity Parkway, 5th Floor Stockton, CA 95219";
String addressMatcher = "\\d{5}";
if(addr.matches(addressMatcher)){
System.out.println(addr);
}
上面是我在获得答案后使用的代码,但没有正则表达式匹配并打印addr。我做错了吗? 问候, KARTHIK
答案 0 :(得分:9)
简单表达式是".*\\d{5}$"
,表示你想要任何字符0次或更多次,然后任何数字5次,然后是字符串的结尾。请注意,这说明需要转义Java字符串中的斜杠。
如果字符串末尾可能包含更多字符,则可以将.*
附加到表达式以匹配它们。但是,这也可能最终匹配地址中的数字,因此请确保您的数据采用一致的预期格式。
在这种情况下,正则表达式可能不够,因为并非所有5位数字实际上都是邮政编码。同样,某些邮政编码可能包含其他数字(通常在前五位后跟-
之后。)
答案 1 :(得分:0)
我不太确定这是否是你要找的:
(\ W \ S *)+,(\ S *(\ W \ S *)) \ S * [AZ] {2} \ S * [1-9] { 5}
此表达式将匹配:
1 - 任何带有逗号后跟逗号的单词,
2 - 然后可选的重复单词用空格分隔,后跟逗号
3 - 最后,它以两个字符(状态代码)结束,后跟5个数字(非零数字)的邮政编码
我希望这有帮助
[编辑]
此表达式将过滤掉地址中不是正确位置的数字作为邮政编码,例如您的示例中的(10100)