function func(a) {
        a = a.toUpperCase();
        if (!/^\d{17}([0-9]|X)$/.test(a)) return false;
        var sp = a.match(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
        var bir = new Date(sp[2] + "/" + sp[3] + "/" + sp[4]);
        if (!((bir.getFullYear() == Number(sp[2])) && ((bir.getMonth() + 1) == Number(sp[3])) && (bir.getDate() == Number(sp[4])))) return false;
        var _i = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
        var _c = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
        var t = 0;
        for (var i = 0; i < 17; i++) t += a.substr(i, 1) * _i[i];
        return _c[t % 11] == a.substr(17, 1);
    }
func('350583198701336854')