Привет,
Я использую локальную копию базы данных Geonames, включая данные о стране.Мое пользовательское приложение .NET должно проверять почтовые / почтовые индексы, которые вводят пользователи.Проверка должна быть выполнена локально и не может использовать доступные веб-сервисы Geonames.Это требование моего приложения.Я надеюсь, что вы можете помочь мне понять, как это сделать.
Внутри базы данных 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 другой «синтаксис регулярных выражений», чем в функции .NET Regex.Match()
?Любые предложения о том, как действовать дальше?
Мне нужно проверить почтовые индексы для всех стран - не только для Канады и США, поэтому я действительно надеюсь, что смогу использовать богатство контента, существующего вбаза данных Geonames!
Спасибо за вашу помощь!
MomentSurfer