正規表示式身份證 日期 電話號碼等

2021-07-10 09:26:07 字數 3897 閱讀 1686

正規表示式

**身份證驗證:

方式一:只能判斷18位身份證:但是方法優於方法二**

+ (bool)checkidentitycardno:(nsstring*)cardno

nsarray* codearray = [nsarray arraywithobjects:@"7",@"9",@"10",@"5",@"8",@"4",@"2",@"1",@"6",@"3",@"7",@"9",@"10",@"5",@"8",@"4",@"2", nil];

nsdictionary* checkcodedic = [nsdictionary dictionarywithobjects:[nsarray arraywithobjects:@"1",@"0",@"x",@"9",@"8",@"7",@"6",@"5",@"4",@"3",@"2", nil] forkeys:[nsarray arraywithobjects:@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10", nil]];

nsscanner* scan = [nsscanner scannerwithstring:[cardno substringtoindex:17]];

int val;

bool isnum = [scan scanint:&val] && [scan isatend];

if (!isnum)

int sumvalue = 0;

for (int i =0; i<17; i++)

nsstring* strlast = [checkcodedic objectforkey:[nsstring stringwithformat:@"%d",sumvalue%11]];

if ([strlast isequaltostring: [[cardno substringwithrange:nsmakerange(17, 1)]uppercasestring]])

return

no;}

方式二:判斷18位15位身份證

+ (bool)pinpersonalidentificationnumber:(nsstring *) textstring

[0-9a-za-z])|(\\d[0-9a-za-z])";

nspredicate *numberpre = [nspredicate predicatewithformat:@"self matches %@",number];

if ([numberpre evaluatewithobject:textstring]) [1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9])(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)";

nspredicate *numberpre1 = [nspredicate predicatewithformat:@"self matches %@",date];

if ([numberpre1 evaluatewithobject:datetext]) else

}else

}else

}else

}

日期驗證:

閏年的2月份有29天,因此匹配閏年日期格式為yyyy-mm-dd的正規表示式為:

(([0-9])(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29
最後,將平年和閏年的日期驗證表示式合併,我們得到最終的驗證日期格式為yyyy-mm-dd的正規表示式為:

(([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9])-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9])(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)
dd/mm/yyyy格式的正則驗證表示式為:

(((0[1-9]|[12][0-9]|3[01])/((0[13578]|1[02]))|((0[1-9]|[12][0-9]|30)/(0[469]|11))|(0[1-9]|[1][0-9]|2[0-8])/(02))/([0-9][1-9]|[0-9][1-9][0-9]|[0-9][1-9][0-9]|[1-9][0-9]))|(29/02/(([0-9])(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00)))
**號碼驗證:

+ (bool) ismobile:(nsstring *)mobilenumbel$";

/**10 * 中國移動:china mobile

11 * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188

12 */

nsstring * cm = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[2378])\\d)\\d$";

/**15 * 中國聯通:china unicom

16 * 130,131,132,152,155,156,185,186

17 */

nsstring * cu = @"^1(3[0-2]|5[256]|8[56])\\d$";

/**20 * 中國電信:china telecom

21 * 133,1349,153,180,189,181(增加)

22 */

nsstring * ct = @"^1((33|53|8[019])[0-9]|349)\\d$";

nspredicate *regextestmobile = [nspredicate predicatewithformat:@"self matches %@", mobil];

nspredicate *regextestcm = [nspredicate predicatewithformat:@"self matches %@", cm];

nspredicate *regextestcu = [nspredicate predicatewithformat:@"self matches %@", cu];

nspredicate *regextestct = [nspredicate predicatewithformat:@"self matches %@", ct];

if (([regextestmobile evaluatewithobject:mobilenumbel]

|| [regextestcm evaluatewithobject:mobilenumbel]

|| [regextestct evaluatewithobject:mobilenumbel]

|| [regextestcu evaluatewithobject:mobilenumbel]))

return no;

}

常見正則身份證,中文,電話號碼等

正則驗證js author param tel 驗證手機號碼 export function tel val g return pattern.test val param digits 驗證整數 export function digits val 負數 param number 驗證十進位制數字...

電話號碼正規表示式

在做專案時常常用到判斷 號碼的正規表示式,寫了乙個,可驗證如下27種格式 1108888888 88888888 8888888 123 88888888 23435 0871 8888888 123 023 88888888 23435 86 0871 8888888 123 8888888 12...

電話號碼正規表示式

d d d d d d d d d d d d d d d d d 匹配格式 11位手機號碼 3 4位區號,7 8位直播號碼,1 4位分機號 如 12345678901 1234 12345678 1234 d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 ...