如何解决使用正则表达式的澳大利亚区域需要的地址解析和验证技术
|| 我们需要对以下字段进行验证 街道地址/营业地址 需要注意的条件如下 邮局信箱,私人包不能用作地址。地址字段不应以以下内容开头: 注意:^ =空格G^P^O
GPO^
G.P.O
GPO.
G.P.O. Box
P^O
P.O
PO^
PO.
P.O.
P.O.B
POBOX
POST BOX
POST OFFICE BOX
P / O Box
P/O Box
P O Box
P.O. Box
BOX^
BOX.
Private Bag^
Private Bag.
Locked Bag
此列表需要可配置,以允许以后包含其他规则。无需验证大小写
您能建议我使用Java或Java更好地实现这种验证吗?
如果我使用Java,建议使用Regex类
如果是Javascript,我应该怎么做
请分享您的示例代码(如果有)
我正在检查我们是否使用正则表达式会这样做吗?
ps:由于此项目无法使用任何google或yahoo api或任何其他付费的API来解析街道地址。
解决方法
在那种情况下,我不会使用regexp。取而代之的是,我将所有\“停用词\”放在文件中,将其读入一个集合并使用循环进行验证:
public static boolean isValid(String address) {
Set<String> stopWords = getSet(); // some magic to get the loaded set
for (String stopWord:stopWords) {
if (address.trim().toLowerCase().startsWith(stopWord.toLowerCase())) {
return false;
}
}
return true;
}
最大的好处是:停用词保存在文件中,不会编译成任何下周及以后没人能理解的正则表达式。
, 不是我自己的正则表达式专家,所以我的回答将是很长的路要走。
您可以在正则表达式中包括可能值的列表:
/(G\\sP\\sO)|(GPO\\s)|(G\\.P\\.O)|(G\\.P\\.O\\.\\sBox)| .... and so one
我认为这不是解决问题的最有效方法,但仍然可以使用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。