ID card number verification function

xiaoxiao2021-03-06  51

Function CheckidCard (SSTR, BYVAL DDATE, BYVAL NSEX)

? CheckidCard = "false"

? IF isnull (sstr) or sstr = "" "" "" "

? If not isdate (ddate) or DDATE = "" THEN EXIT FUNCTION

? If not isnumeric (nsex) or nsex = "" THEN EXIT FUNCTION

?

Dim Ore, SDATE

?

? Set ore ?? = new regexp

? ore.Ignorecase? = TRUE

? ore.global? = TRUE

?

NSEX? = CINT (NSEX MOD 2)

SDATE? = Year (DDATE) & DBLNUM (Month (DDATE)) & dblnum (DDATE))

?

SELECT CASE LEN (SSTR)

?? Case 8

??? f Datediff ("YYYY", DDATE, DATE ()) <191 Exit Function

??? ore.pattern? = "^ [/ d] {8} $"

??? if not ore.test (sstr) THEN EXIT FUNCTION

??? IF sstr <> sdate kiln exit function

?? Case 15

??? ore.pattern? = "^ [/ d] {15} $"

??? if not ore.test (sstr) THEN EXIT FUNCTION

??? IF MID (SSTR, 7, 6) <> Right (SDATE, 6) THEN EXIT FUNCTION

??? IF CINT (MID (SSTR, 14, 1)) MOD 2 <> NSEX THEN EXIT FUNCTION

?? Case 18

??? ore.pattern? = "^ (?: [/ d] {18} | [/ d] {17} x) $"

??? if not ore.test (sstr) THEN EXIT FUNCTION

??? IF MID (SSTR, 7, 8) <> SDATE THEN EXIT FUNCTION

??? IF CINT (MID (SSTR, 17, 1)) MOD 2 <> NSEX THEN EXIT FUNCTION

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??? DIM NN, AW, AC, NL

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??? nn = 0

??? AW = Array (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)

??? AC = Array ("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" )

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??? for nl = 1 to 17

???? nn = nn CINT (MID (SSTR, NL, 1)) * AW (NL - 1)

??? next

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??? IF ucase (Right (SSTR, 1)) <> ac (nn mod 11) THEN EXIT FUNCTION

?? Case Else

??? exit function

? End SELECT

?

? Set fore ?? = Nothing

?

? CheckidCard = "true"

END FUNCTION

Function DBLNUM (NNUM)

DBLNUM = nnum

? If dblnum <10 Then DBLNUM = "0" & ​​dblnum

END FUNCTION

转载请注明原文地址:https://www.9cbs.com/read-116579.html

New Post(0)