正则表达式-证件格校验
yanghuichi opened this issue · 1 comments
yanghuichi commented
外国人永久居留身份证,标准的证件格式为:名+,+姓 ,名与姓中间用逗号(半角)如:【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 刘老师帮忙看一下,谢谢!
eulerlcs commented
我做以下假设
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());
}
}