正则表达式校验身份证号
来源:互联网 发布:乐1pro刷机包优化内核 编辑:程序博客网 时间:2024/05/16 04:58
最近在看正则表达式的一些东西,突然想起之前写的一个关于身份证号码校验的小程序。当时写身份证的校验的时候,没有考虑到输入格式的校验。程序的健壮性很差,现在我就用正则表达式来做身份证格式校验,体验一下正则表达式的奇妙用法。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。常见的用法包括模糊搜索和搜索过滤。
字符集:
[abc] a、b 或 c(简单类) [^abc] 任何字符,除了 a、b 或 c(否定) [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集) [a-z&&[def]] d、e 或 f(交集) [a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减)
预定义字符集:
. 任何字符(与行结束符可能匹配也可能不匹配) \d 数字:[0-9] \s 空白字符:[ \t\n\x0B\f\r] \w 单词字符:[a-zA-Z_0-9]
数量词:
{m}:m个字符 {m,n}:m到n个字符 {?}:{0,1} {+}:{1,n} {*}:{0,n} ^:开始 $:结束
关键代码:
import java.util.Arrays;import java.util.Scanner;public class CheckIDCardDome { public static void main(String[] args) { Scanner console = new Scanner(System.in); while (true) { System.out.print("Please input you IdCard number:"); String num = console.nextLine(); char[] id = {}; for (int i = 0; i < num.length(); i++) { id = Arrays.copyOf(id, id.length + 1); id[id.length - 1] = num.charAt(i); } boolean IsFormRight = verForm(num); if (IsFormRight) { boolean IsCorrect = verify(id); if (IsCorrect) { System.out.println("Id is right!"); return; } else { System.out.println("Id is wrong!"); } } } }<------------------身份证格式的正则校验-----------------> public static boolean verForm(String num) { String reg = "^\\d{15}$|^\\d{17}[0-9Xx]$"; if (!num.matches(reg)) { System.out.println("Format Error!"); return false; } return true; }<------------------身份证最后一位的校验算法-----------------> public static boolean verify(char[] id) { int sum = 0; int w[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 }; char[] ch = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' }; for (int i = 0; i < id.length - 1; i++) { sum += (id[i] - '0') * w[i]; } int c = sum % 11; char code = ch[c]; char last = id[id.length-1]; last = last == 'x' ? 'X' : last; return last == code; }}
OK,关于用正则表达式做身份证校验的过程就是这样。
注:正则匹配的相关介绍来自Java API文档中Pattern类的说明部分,身份证最后一位的校验算法,可自行百度。
0 0
- 正则表达式校验身份证号
- java正则表达式 校验邮箱 身份证号 手机号等
- js校验(正则 地址 身份证号)
- 身份证号验证正则表达式
- 正则表达式验证身份证号
- 身份证号 正则表达式 探究
- 身份证号验证正则表达式
- 身份证号验证正则表达式
- 身份证号正则校验(js校验+JAVA校验)
- 正则表达式之身份证号验证
- 利用正则表达式判断身份证号
- 利用正则表达式判断身份证号
- 利用正则表达式判断身份证号
- 利用正则表达式判断身份证号
- js正则表达式验证身份证号
- js身份证号正则表达式验证
- iOS 正则表达式 /身份证号 /姓名
- 正则表达式(手机号、身份证号)
- C语言scanf函数详细解释
- Android中View的事件分发机制
- 阶乘统计0个数 算法
- SlidingMenu开源库
- 杨辉三角问题 算法编程
- 正则表达式校验身份证号
- 最佳浏览路线问题 算法设计
- spring ioc和DI理解
- 通过userAgent判断手机浏览器类型
- HDOJ 2040 亲和数
- 51nod 1086
- react学习札记(一)
- hdu5612
- meanshift跟踪算法总结