JavaScript Regex: Complicated input validation
- by ScottSEA
I'm trying to construct a regex to screen valid part and/or serial numbers in combination, with ranges.
A valid part number is a two alpha, three digit pattern or /[A-z]{2}\d{3}/
i.e. aa123 or ZZ443 etc...
A valid serial number is a five digit pattern, or /\d{5}/
13245 or 31234 and so on.
That part isn't the problem. I want combinations and ranges to be valid as well:
12345, ab123,ab234-ab245, 12346 - 12349 - the ultimate goal. Ranges and/or series of part and/or serial numbers in any combination. Note that spaces are optional when specifying a range or after a comma in a series. Note that a range of part numbers has the same two letter combination on both sides of the range (i.e. ab123 - ab239)
I have been wrestling with this expression for two days now, and haven't come up with anything better than this:
/^(?:[A-z]{2}\d{3}[, ]*)|(?:\d{5}[, ]*)|(?:([A-z]{2})\d{3} ?- ?\4\d{3}[, ]*)|(?:\d{5} ?- ?\d{5}[, ]*)$/
...
My Regex-Fu is weak.