PHP
// Áֹεî·Ï¹øÈ£ À¯È¿¼º °Ë»ç: ¿Ã¹Ù¸¥ °æ¿ì true, Ʋ¸° °æ¿ì false ¹Ýȯ
function resnoCheck($resno1, $resno2) {
$resno = $resno1 . $resno2;
// ÇüÅ °Ë»ç: ÃÑ 13ÀÚ¸®ÀÇ ¼ýÀÚ, 7¹øÂ°´Â 1..4ÀÇ °ªÀ» °¡Áü
if (!ereg(’^[[:digit:]]{6}[1-4][[:digit:]]{6}$’, $resno))
return false;
// ³¯Â¥ À¯È¿¼º °Ë»ç
$birthYear = (’2′ >= $resno[6]) ? ‘19′ : ‘20′;
$birthYear += substr($resno, 0, 2);
$birthMonth = substr($resno, 2, 2);
$birthDate = substr($resno, 4, 2);
if (!checkdate($birthMonth, $birthDate, $birthYear))
return false;
// Checksum ÄÚµåÀÇ À¯È¿¼º °Ë»ç
for ($i = 0; $i < 13; $i++) $buf[$i] = (int) $resno[$i];
$multipliers = array(2,3,4,5,6,7,8,9,2,3,4,5);
for ($i = $sum = 0; $i < 12; $i++) $sum += ($buf[$i] *= $multipliers[$i]);
if ((11 - ($sum % 11)) % 10 != $buf[12])
return false;
// ¸ðµç °Ë»ç¸¦ Åë°úÇϸé À¯È¿ÇÑ Áֹεî·Ï¹øÈ£ÀÓ
return true;
}
?>
JAVASCRIPT
function Q_is_valid_SSN_Kr(strng) {
re = /^[0-9]{6}-?[0-9]{7}$/;
if (!re.test(strng)) return false;
strng_new = strng.replace(”-”,”");
var year = parseInt(strng_new.substr(0,2),10);
var month = parseInt(strng_new.substr(2,2),10);
var day = parseInt(strng_new.substr(4,2),10);
var gender = parseInt(strng_new.charAt(6) ,10);
if ( month<1 || month>12 || gender<1 || gender>4 ) return false;
var arrayOfLasts = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
if(month==2) {
year += (gender<3 ? 1900 : 2000);
if(Q_is_leap_year(year)) arrayOfLasts[1] = 29;
}
if(day<1 || day>arrayOfLasts[month-1]) return false;
var tmp = 0;
for(var n=0; n<12; n++) tmp += (n%8+2) * parseInt(strng_new.charAt(n),10);
tmp = (11-(tmp%11))%10;
if (tmp != strng_new.charAt(12)) return false;
return true;
}