PostcodeRegex.java

package uk.gov.dhsc.htbhf.claimant.regex;

public class PostcodeRegex {
    /**
     * Regex for matching UK postcodes matching BS7666 format.
     * { @see https://www.gov.uk/government/publications/bulk-data-transfer-for-sponsors-xml-schema } The format is in the file BulkDataCommon-v2.1.xsd
     * { @see https://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive }
     */
    public static final String UK_POST_CODE_REGEX = "([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})"
            + "|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9][A-Za-z]?))))\\s?[0-9][A-Za-z]{2})";

    /**
     * Regex being used by the latest DWP specification.
     */
    public static final String UK_POST_CODE_REGEX_V3 = "^(GIR ?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]([0-9ABEHMNPRV-Y])?)"
            + "|[0-9][A-HJKPS-UW]) ?[0-9][ABD-HJLNP-UW-Z]{2})$";

    /**
     * Regex for matching UK Channel Island and Isle of Man postcodes.
     */
    public static final String CHANNEL_ISLAND_POST_CODE_REGEX = "([Gg][Yy]|[Jj][Ee]|[Ii][Mm]).+";
}