UNPKG

node-form

Version:

form validation engine

79 lines (62 loc) 2.09 kB
var RCValidator = (function () { function RCValidator() { this.tagName = 'rc'; } RCValidator.prototype.isAcceptable = function (s) { var old = false; var month; var year; var day; var numrc; var dbg = false; if (s === undefined) return false; if (s.toString().length === 0) { return false; } if (!s.match(/^\d{6}\/?\d{3,4}$/)) return false; if (s.indexOf('/') != -1) old = s.length === 10; else old = s.length === 9; if (s.indexOf('/') !== -1) { numrc = s.split("/"); numrc = numrc.join(""); } else { numrc = s; } day = parseInt(numrc.substring(4, 6), 10); month = parseInt(numrc.substring(2, 4), 10); year = parseInt(numrc.substring(0, 2), 10); if (s.match(/\/?(0000?|8888?|9999?)$/)) { dbg = true; } if (!old && !dbg) { if (numrc % 11 !== 0 && s.substr(s.length - 1) === "0") { if (parseInt(numrc.substr(0, 9), 10) % 11 !== 10) return false; } else if (numrc % 11 !== 0) return false; } if (year > 54 && old && !dbg) return false; if (!old && year < 54) year = 2000 + year; else year = 1900 + year; if (month > 50 && month < 63) month = month - 50; if (!old && year >= 2004) { if (month > 20 && month < 33) month = month - 20; if (month > 70 && month < 83) month = month - 70; } var datum = moment(_s.lpad(day.toString(), 2, '0') + "." + _s.lpad(month.toString(), 2, '0') + "." + year, "DD.MM.YYYY"); if (!datum.isValid()) return false; return datum.toDate() <= moment(Date.now()).toDate(); }; return RCValidator; })();