匹配18位身份證號(hào),正則表達(dá)式如下:
@"^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|31)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$"
說(shuō)明:現(xiàn)在身份證號(hào)都已經(jīng)是18位了,沒(méi)必要再去考慮匹配15位。
18位身份證號(hào)組成:6位地區(qū)號(hào)+4位年+4位月日+3位編號(hào)+1位新生成編號(hào)
邏輯:
1)6位地區(qū)號(hào):首位非0,后五位數(shù)字。對(duì)應(yīng)正則:[1-9][0-9]{5}
2)4位年:19或20開頭,后兩位數(shù)字。對(duì)應(yīng)正則:(19|20)[0-9]{2}
3)4位月日:
i)大月31天。對(duì)應(yīng)正則:(01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|31)
ii)小月30天。對(duì)應(yīng)正則:(04|06|09|11)(0[1-9]|[1-2][0-9]|30)
iii)2月28天或29天。對(duì)應(yīng)正則:02(0[1-9]|[1-2][0-9])
4)3位編號(hào):三位數(shù)字。對(duì)應(yīng)正則:[0-9]{3}
5)1位新生成編號(hào):數(shù)字或x。對(duì)應(yīng)正則:([0-9]|x|X)
現(xiàn)僅剩以下缺點(diǎn)(不太用到):
1)未匹配閏年
2)未匹配前三位地區(qū)編號(hào)是否存在
最后附上:
【手機(jī)號(hào)正則】
/^1[3-8][0-9]{9}$/
【郵箱正則】
/^\w+([.]\w+)?[@]\w+[.]\w+([.]\w+)?$/
【日期】
?/^((19|20)[0-9]{2})-((0[1-9])|10|11|12)-(([0-2][0-9])|30|31)$/
【文件名】
/\\|\/|:|\*|\?|'|"|<|>|\|/
【2位小數(shù)】
/^[0-9]+(.[0-9]{1,2})?$/