将给定的正则表达式转换为详细格式以使用可用于在 asp.net 中验证英国邮政编码的格式?

Convert the given regular expression in veribose format to use a format usable to validate UK postcode in asp.net?

我有正则表达式我需要使用这个正则表达式来验证英国邮政编码。我已将其转换为可与 asp.net 正则表达式引擎一起使用的格式。任何人都可以指导我我所做的是正确的还是其中有任何错误。任何帮助都将 appreciated.These 邮政编码 returns 作为验证邮政编码 W1A 0AX、SO10 9AA、FY9 9AA、WC1A 9AA。

详细格式

(GIR\s0AA) |
(
    # A9 or A99 prefix
    ( ([A-PR-UWYZ][0-9][0-9]?) |
         # AA99 prefix with some excluded areas
        (([A-PR-UWYZ][A-HK-Y][0-9](?<!(BR|FY|HA|HD|HG|HR|HS|HX|JE|LD|SM|SR|WC|WN|ZE)[0-9])[0-9]) |
         # AA9 prefix with some excluded areas
         ([A-PR-UWYZ][A-HK-Y](?<!AB|LL|SO)[0-9]) |
         # WC1A prefix
         (WC[0-9][A-Z]) |
         (
            # A9A prefix
           ([A-PR-UWYZ][0-9][A-HJKPSTUW]) |
            # AA9A prefix
           ([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])
         )
        )
      )
      # 9AA suffix
    \s[0-9][ABD-HJLNP-UW-Z]{2}
    )

我用来验证邮政编码的格式如下

return (

    Regex.IsMatch(postcode, "([GIR[ ]0AA])") ||
    Regex.IsMatch(postcode, "(^[A-PR-UWYZ][0-9][0-9]?[ ][0-9][ABD-HJLNP-UW-Z]{2}$)") ||
    Regex.IsMatch(postcode, "(^[A-PR-UWYZ][A-HK-Y][0-9](?<!(BR|FY|HA|HD|HG|HR|HS|HX|JE|LD|SM|SR|WC|WN|ZE)[0-9])[0-9][ ][0-9][ABD-HJLNP-UW-Z]{2}$)") ||
    Regex.IsMatch(postcode, "(^[[A-PR-UWYZ][A-HK-Y](?<!AB|LL|SO)[0-9][ ][0-9][ABD-HJLNP-UW-Z]{2}$)") ||
    Regex.IsMatch(postcode, "(^WC[0-9][A-Z][ ][0-9][ABD-HJLNP-UW-Z]{2}$)") ||
    Regex.IsMatch(postcode, "(^[A-PR-UWYZ][0-9][A-HJKPSTUW][ ][0-9][ABD-HJLNP-UW-Z]{2}$)") ||
    Regex.IsMatch(postcode, "(^[A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY][ ][0-9][ABD-HJLNP-UW-Z]{2}$)")

            );
    }

您可以使用

(GIR\s0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9](?<!(BR|FY|HA|HD|HG|HR|HS|HX|JE|LD|SM|SR|WC|WN|ZE)[0-9])[0-9])|([A-PR-UWYZ][A-HK-Y](?<!AB|LL|SO)[0-9])|(WC[0-9][A-Z])|(([A-PR-UWYZ][0-9][A-HJKPSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))))\s[0-9][ABD-HJLNP-UW-Z]{2})

regex demo