JSFiddle - React, Tailwind, and code Playground
by st3fan
HTML
<script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
<input type="text" value="199405221234" />
JavaScript
function validatePNum(sPNum) {
var numbers = sPNum.match(/^(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)$/);
var checkSum = 0;
var d = new Date();
if (!isDate("19" + sPNum.substring(0, 2), sPNum.substring(2, 4), sPNum.substring(4, 6))) {
return false;
}
if (numbers == null) { return false; }
var n;
for (var i = 1; i <= 10; i++) {
n = parseInt(numbers[i]);
if (i % 2 == 0) {
checkSum += n;
} else {
checkSum += (n * 2) % 9 + Math.floor(n / 9) * 9;
}
}
if (checkSum % 10 == 0) { return true; }
return false;
}
function getYear(y) { return (y < 1000) ? y + 1900 : y; }
function isDate(year, month, day) {
month = month - 1; // 0-11 in JavaScript
var tmpDate = new Date(year, month, day);
if ((getYear(tmpDate.getYear()) == year) &&
(month == tmpDate.getMonth()) &&
(day == tmpDate.getDate())) {
return true;
} else {
return false;
}
}
var validators = {};
validators.date = function(year, month, day) {
month = month - 1; // 0-11 in JavaScript
var date = new Date(year, month, day);
return ((getYear(date.getYear()) == year) &&
(month == date.getMonth()) &&
(day == date.getDate()));
};
validators.ssn = function(input) {
var numbers = input.match(/^(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)$/);
var checkSum = 0;
var d = new Date();
var year = '19' + input.substring(0, 2), // TEMP
month = input.substring(2, 4),
day = input.substring(4, 6);
if (!validators.date(year, month, day))
return false;
if (numbers == null) { return false; }
var n;
for (var i = 1; i <= 10; i++) {
n = parseInt(numbers[i]);
if (i % 2 == 0) {
checkSum += n;
} else {
checkSum += (n * 2) % 9 + Math.floor(n / 9) * 9;
}
}
if (checkSum % 10 == 0) {...