onlyliuxin / coding2017

218 stars 643 forks source link

正则表达式-证件格校验 #505

Open yanghuichi opened 7 years ago

yanghuichi commented 7 years ago

外国人永久居留身份证,标准的证件格式为:名+,+姓 ,名与姓中间用逗号(半角)如:【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 7 years ago

我做以下假设

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());
    }
}