Is it possible to check with regex:
- the complete string are numbers AND
- the first character is a 7 or 8 then the complete length of the string must be 11 OR
- the first character is a 1 then the complete length of the string must be 10
- OR the first character is a 0 then the complete length of the string must be 18 AND on character 8 must be a 8 or 7 OR on character 9 must be a 1
I hope you can see what I mean. Hope the examples will help you to know what I mean.
Here is my solution(not working completely-> I don't know how to check if in case it starts with a 0 and it is 18 characters long the character on position 8 must be 7or8 or on position 9 the character must be 1):
^(?:[78]\d{10}|[1-69]\d{9}|[0]/d{18})$
For example:
- 85556987456 -> starts with 8 and length is 11 -> match
- 75556987456 -> starts with 7 and length is 11 -> match
- 1555698745 -> starts with 1 and length is 10 -> match
- 000000085556987456 -> starts with 0 and length is 18 and on pos 8 is a 8 -> match
- 000000075556987456 -> starts with 0 and length is 18 and on pos 8 is a 7 -> match
- 000000001556987456 -> starts with 0 and length is 18 and on pos 9 is a 1 -> match
Thank you!
You can use
See the regex demo
Details
^- start of string(?:[78]\d{10}|1\d{9}|0\d{6}(?:[87]\d|\d1)\d{9})- one of the three alternatives:[78]\d{10}-7or8and then 10 digits (11 all in all)|- or1\d{9}-1and then 9 digits (10 all in all)|- or0\d{6}(?:[87]\d|\d1)\d{9}-0, then 6 digits, then the 8th digit equal to8or7and any one digit, or any one digit and the 9th digit equal to1, and then 9 more digits (=18 digits)$- end of string.