onlyliuxin/coding2017

正则表达式-证件格校验

yanghuichi opened this issue · 1 comments

外国人永久居留身份证,标准的证件格式为:名+,+姓 ,名与姓中间用逗号(半角)如:【ZHENJIAN,YANG】,

1、字母必须是大写
2、半角的逗号只能在中间字母的中间任何位置,不可以在两端,
3、姓名前后无空格。


测试匹配样本:
DDDDDdd
DDDDD,DD
,DDDDD,,DD
DDDDDDD,
,DDDDD,,DD,
JNOa是否Dasdfiasdm, asdjf
ZHENJIAN,YANG

-- 正确的情况下只能匹配 ZHENJIAN,YANG


正则表达式:^[A-Z\d+(,)]+$,目前有如下缺陷:
1、可以匹配多个,逗号(不足)
2、前或后如果有逗号也可以匹配 (不足)

@eulerlcs 刘老师帮忙看一下,谢谢!

我做以下假设

1.外国人姓名的字符空间为大写字母加逗号
2.逗号能且仅能出现在姓名字符串中一次,且不能出现在两端。

正则表达式

^[A-Z]+,[A-Z]+$

java test case

@Test
public void test_foreignFullName() {
	String text = Utils.readAllFromResouce("foreignFullName.txt");

	Pattern p = Pattern.compile("^[A-Z]+,[A-Z]+$", Pattern.MULTILINE);
	Matcher m = p.matcher(text);
	while (m.find()) {
		System.out.println(m.group());
	}
}