I have a string which has to look like this:
- XXXXX-YYYYYYYY-ZZZ
- XXXXX-YYYYYYY-ZZZ
- XXXXX-YYYYYY-ZZZ
- XXXXX-YYYYY-ZZZ
- XXXXX-YYYY-ZZZ
- XXXXX-YYY-ZZZ
- XXXXX-YY-ZZZ
- XXXXX-Y-ZZZ
- XXXXXYYYYYYYYZZZ
- XXXXXYYYYYYYZZZ
- XXXXXYYYYYYZZZ
- XXXXXYYYYYZZZ
- XXXXXYYYYZZZ
- XXXXXYYYZZZ
- XXXXXYYZZZ
- XXXXXYZZZ
Regex for each part is:
- X:
^[23][0-9]{4}$
. - Y:
^(?=.*[1-9])[0-9]{1,8}$
. - Z:
^[0-9]{3}$
.
As for dashes, it has to be either both or none (it can’t be only one, e.g. 12345-12987 or 1234512-987)
Examples of such strings are:
- 29803-134-000
- 31234-000134-151
- 31234000134151
It can’t be e.g. 12345-00-987 <- Those zeroes as YY are not correct.
I don’t know how to write a full regular expression. Please, help.
Thanks.
I tried (^[23][0-9]{4}-(?=.*[1-9])[0-9]{1,8}-[0-9]{3}$)|(^[23][0-9]{4}(?=.*[1-9])[0-9]{1,8}[0-9]{3}$)
, but that allows 12345-00-987 / 1234500987.
user25606428 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.