正确的匹配身份证应该为
/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test('120103195010014014')
网上大部分都是下面这个错误的正则表达式,这本来是个合法的身份证(这个身份证是用工具生成出来的),结果返回却是false,原因在于没有把10月份包含进去
var t = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test('120103195010014014')