<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
    <title>42度空间-身份证号码的正则表达式及验证详解(JavaScript,Regex)方案1测试</title>
</head>
<body>
<div id="main"></div>
<script>
    console.log = function(val) {
        document.getElementById("main").innerHTML += val +"<br />";
    }
    var p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    //输出 true
    console.log(p.test("11010519491231002X"));
    //输出 false 不能以0开头
    console.log(p.test("01010519491231002X"));
    //输出 false 年份不能以17开头
    console.log(p.test("11010517491231002X"));
    //输出 false 月份不能为13
    console.log(p.test("11010519491331002X"));
    //输出 false 日期不能为32
    console.log(p.test("11010519491232002X"));
    //输出 false 不能以a结尾
    console.log(p.test("11010519491232002a"));
</script>
</body>
</html>