A validator for Iranian (Persian) national identifier or social number
c#, java, javascript, php
parameter: string (It doesn't support arabic or persian numbers)
return: boolean
By Vahid Hallaji under the MIT license
A validator for Iranian (Persian) national identifier or social number
c#, java, javascript, php
parameter: string (It doesn't support arabic or persian numbers)
return: boolean
By Vahid Hallaji under the MIT license
| public static bool isValid(string number) | |
| { | |
| if (!(new Regex(@"^\d{10}$")).IsMatch(number) || (new Regex(@"^(\d)\1{9}$")).IsMatch(number)) { | |
| return false; | |
| } | |
| int sum = 0; | |
| for (int key = 0; key < number.Length - 1; key++) { | |
| sum += (10 - key) * (int)(number[key] - '0'); | |
| } | |
| sum %= 11; | |
| int number9 = (int)(number[9] - '0'); | |
| return sum < 2 ? sum == number9 : 11 == number9 + sum; | |
| } |
| public static boolean isValid(String number) | |
| { | |
| if (!number.matches("^\\d{10}$") || number.matches("^(\\d)\\1{9}$")) { | |
| return false; | |
| } | |
| int sum = 0; | |
| for (int key = 0; key < number.length() - 1; key++) { | |
| sum += (10 - key) * Integer.parseInt(number.substring(key, key+1)); | |
| } | |
| sum %= 11; | |
| int number9 = Integer.parseInt(number.substring(9, 10)); | |
| return sum < 2 ? sum == number9 : 11 == number9 + sum; | |
| } |
| function isValid(number) | |
| { | |
| number = number.toString(); | |
| if (!number.match(/^\d{10}$/) || !!number.match(/^(\d)\1{9}$/)) { | |
| return false; | |
| } | |
| for (var sum = 0, key = 0; key < number.length - 1; key++) { | |
| sum += (10 - key) * parseInt(number[key]); | |
| } | |
| sum %= 11; | |
| return sum < 2 ? sum == parseInt(number[9]) : 11 == parseInt(number[9]) + sum; | |
| } |
| public static function isValid($number) | |
| { | |
| if (preg_match('/^\d{10}$/', $number) !== 1 || preg_match('/^(\d)\1{9}$/', $number) === 1) { | |
| return false; | |
| } | |
| $sum = array_sum(array_map(function ($key) use ($number) { | |
| return (10 - $key) * $number[$key]; | |
| }, range(0, 8))) % 11; | |
| return $sum < 2 ? $sum == $number[9] : 11 == $number[9] + $sum; | |
| } |