身份证对象验证规则,太慢
Created by: luodang2050
版本:1.23.26 如下代码,为身份证号的验证规则,身份证号不明允许填“0”,否则要正则匹配且最后校验位需正确。 实测代码能够正常校验,但需要几秒响应,体验太差。 注:sfzh__c为身份证号字段。
NOT(OR(
sfzh__c = "0",
AND(
REGEX(sfzh__c, "([1-6][1-9]|50)[0-9]{4}(18|19|20|21)[0-9]{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)[0-9]{3}[0-9Xx]"),
CASE(
MOD(
(VALUE(MID(sfzh__c, 1, 1)) * 7 + VALUE(MID(sfzh__c, 2, 1)) * 9 + VALUE(MID(sfzh__c, 3, 1)) * 10 + VALUE(MID(sfzh__c, 4, 1)) * 5 + VALUE(MID(sfzh__c, 5, 1)) * 8 + VALUE(MID(sfzh__c, 6, 1)) * 4 + VALUE(MID(sfzh__c, 7, 1)) * 2 + VALUE(MID(sfzh__c, 8, 1)) * 1 + VALUE(MID(sfzh__c, 9, 1)) * 6 + VALUE(MID(sfzh__c, 10, 1)) * 3 + VALUE(MID(sfzh__c, 11, 1)) * 7 + VALUE(MID(sfzh__c, 12, 1)) * 9 + VALUE(MID(sfzh__c, 13, 1)) * 10 + VALUE(MID(sfzh__c, 14, 1)) * 5 + VALUE(MID(sfzh__c, 15, 1)) * 8 + VALUE(MID(sfzh__c, 16, 1)) * 4 + VALUE(MID(sfzh__c, 17, 1)) * 2),
11
),
0,"1",1,"0",2,"X",3,"9",4,"8",5,"7",6,"6",7,"5",8,"4",9,"3",10,"2","?"
) = MID(sfzh__c, 18, 1)
)
))