//省份证匹配
fun match11(string : String) : Boolean{
//^(\d{6}) 表示6个数字开头
//(19|2[0-3]) 表示年份前面两个数 19或者 20,21,22,23
// \\d{2} 表示两为数的年份后两位
//(0[1-9]|1[0-2]) 表示月份 0开头的有01-09 或者 1开头的10-12
//(0[1-9]|1[0-9]|2[0-9]|3[0-1]) 表示日期 0开头的01-09 1开头的10-19 2开头20-29 3开头30-31
//(\d{3}) 表示三个数字
//(\d|X|x)?$ 表示以数字或者X或者x结尾 ? 表示这个数也可以没有
return string.matches("^(\\d{6})(19|2[0-3])\\d{2}(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])(\\d{3})(\\d|X|x)?$".toRegex())
}
println("420528199206140000 is id card is ${test.match11("420528199206140000")}")
println("4205281992061400001 is id card is ${test.match11("4205281992061400001")}")
println("42052819920614000x is id card is ${test.match11("42052819920614000x")}")
println("42052819920614000X is id card is ${test.match11("42052819920614000X")}")
println("420528189206140000 is id card is ${test.match11("420528189206140000")}")
420528199206140000 is id card is true
4205281992061400001 is id card is false
42052819920614000x is id card is true
42052819920614000X is id card is true
420528189206140000 is id card is false //这个是因为1892年,那肯定还没...卧槽不一定,131岁,如果还活着应该也是有身份证的。这里最大也就算到从1900年开始,应该没问题;