java中的正则表达式用于非结构化密码

时间:2016-11-07 13:10:54

标签: java regex

我有一些文本样本,我试图应用正则表达式,但无法涵盖所有​​案例

文本样本:

311001
311 001
ds311001NM
ds311 001NM
asd,.;546798;l';
asd,.;546798;l';
asd,.; 546798;l';
asd,.; 546798 ;l';
asd,.; 546 798 ;l';
asd,.;546 798 ;l';

pin代码之间可以有空格,也可能没有空格。我尝试使用正则表达式[1-9]{3}\\s*[0-9]{3},但它并未涵盖所有情况,例如asd,.;506 798 ;l';

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您拥有的正则表达式匹配1-9范围内的3位数字,因此无法找到200 345类型的PIN。

你需要一个更简单的正则表达式

\d{3}\s*\d{3}

请参阅regex demo

Java demo

List<String> strs = Arrays.asList("311001","311 001","ds311001NM","ds311 001NM","asd,.;546798;l';","asd,.;546798;l';","asd,.; 546798;l';","asd,.; 546798 ;l';","asd,.; 546 798 ;l';","asd,.;546 798 ;l';");
Pattern p = Pattern.compile("\\d{3}\\s*\\d{3}");
for (String str : strs) {
    Matcher m = p.matcher(str);
    if (m.find()) {
        System.out.println(m.group());
    }
}