ご挨拶、
国情報データを含む 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 データベースに存在する豊富なコンテンツを活用できることを本当に望んでいます!
ご協力いただきありがとうございます。
モーメントサーファー