RegEx for matching UK Postcodes

前端 未结 30 2435
广开言路
广开言路 2020-11-22 01:38

I\'m after a regex that will validate a full complex UK postcode only within an input string. All of the uncommon postcode forms must be covered as well as the usual. For in

30条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-22 01:46

    We were given a spec:

    UK postcodes must be in one of the following forms (with one exception, see below): 
        § A9 9AA 
        § A99 9AA
        § AA9 9AA
        § AA99 9AA
        § A9A 9AA
        § AA9A 9AA
    where A represents an alphabetic character and 9 represents a numeric character.
    Additional rules apply to alphabetic characters, as follows:
        § The character in position 1 may not be Q, V or X
        § The character in position 2 may not be I, J or Z
        § The character in position 3 may not be I, L, M, N, O, P, Q, R, V, X, Y or Z
        § The character in position 4 may not be C, D, F, G, I, J, K, L, O, Q, S, T, U or Z
        § The characters in the rightmost two positions may not be C, I, K, M, O or V
    The one exception that does not follow these general rules is the postcode "GIR 0AA", which is a special valid postcode.

    We came up with this:

    /^([A-PR-UWYZ][A-HK-Y0-9](?:[A-HJKS-UW0-9][ABEHMNPRV-Y0-9]?)?\s*[0-9][ABD-HJLNP-UW-Z]{2}|GIR\s*0AA)$/i
    

    But note - this allows any number of spaces in between groups.

提交回复
热议问题