问候,
我正在使用 Geonames 数据库的本地副本,包括国家信息数据。我的自定义 .NET 应用程序需要验证用户输入的邮政编码。验证需要在本地完成,不能使用可用的 Geonames Web 服务。这是我的应用程序的要求。我希望你能帮助我弄清楚如何做到这一点。
在 Geonames Country Info 数据库中,有一个字段包含用于验证相应国家/地区的国家/邮政编码的正则表达式。以下是加拿大和美国数据中包含的正则表达式:
Geonames 数据库中的正则表达式:
Canada: ^([a-zA-Z]d[a-zA-Z]d[a-zA-Z]d)$
USA: ^(d{9})$
在我的应用程序中,验证完成后,我首先确定所选国家/地区,然后查找特定国家/地区的有效邮政编码正则表达式。然后我使用以下 .NET/C# 代码来测试匹配:
bool testResult = Regex.IsMatch(postalCode, geonamesRegexForCountry);
当我输入邮政编码的有效样本数据时,正则表达式匹配测试总是失败。以下是一些有效值:
Canada:
Postal Code: L5R3K6
Postal Code: L8M1L5
USA:
Zip Code: 35801
Zip Code: 72201
测试总是失败。知道为什么吗?Geonames 数据库使用的“正则表达式语法”是否与 .NETRegex.Match()
函数使用的不同?关于如何从这里开始的任何建议?
我需要验证所有国家/地区的邮政编码 - 不仅仅是加拿大和美国,所以我真的希望我可以利用 Geonames 数据库中现有的丰富内容!
感谢您所有的帮助!
时刻冲浪者