Reputation: 974
Please, I need to validate Iranian postal code using regex
.
I write this regex for this case \b([^02\n\D]){4}[^5](\d){5}
but its not working on rule number 5 and 7.
please help me to fix it.
this is some rules about this regex:
It's all numeric
10 digit count
don't use 0 in first 5 digit
don't use 2 in postal code
First 4 digit is not the same
The 5th digit cannot be 5
all digits aren't the same
Upvotes: 29
Views: 3748
Reputation: 10360
The following regex satisifes your conditions:
\b(?!(\d)\1{3})[13-9]{4}[1346-9][013-9]{5}\b
Explanation:
\b
- a word boundary(?!(\d)\1{3})
- negative lookahead to make sure that the 1st 4 digits are not the same.[13-9]{4}
- matches 4 occurrences of all the digits except 0
and 2
[1346-9]
- matches a single digit that is not a 0
,2
or 5
[013-9]{5}
- matches 5 occurrences of all the digits except 2
\b
- a word boundaryUpvotes: 34