Can anyone please help me to set the correct input pattern for : when input starting digit is 2 then length is 17 digits if starts with 3 then length is 16 digits.
For example:
when input starts with number 2 then it must be: pattern="d{4} d{4} d{4} d{4} d{1}"
But when input starts with number 3 it must be: pattern="d{4} d{4} d{4} d{4}"
How to set pattern??
Advertisement
Answer
The most obvious solution is to use two alternatives:
^(?:2d{3} d{4} d{4} d{4} d|3d{3} d{4} d{4} d{4})$
See the regex demo.
The ^ matches the start of string, 2d{3} d{4} d{4} d{4} d matches the numbers starting with 2, 3d{3} d{4} d{4} d{4} matches the numbers starting with 3.
However, in PHP PCRE regex, you can use conditionals. Here, you may shorten the pattern to
^(?:(2)|3)d{3} d{4} d{4} d{4}(?(1) d)$
See this regex demo. Here, (?:(2)|3) matches and captures into Group 1 the 2 digit, or matches 3. The (?(1) d) pattern checks if Group 1 matched, and if it did, a space and a digit are required at the end of the string.