只允许使用数字和定界符(“,”和“;”)进行特定输入的正则表达式

时间:2019-06-26 14:43:11

标签: java regex

我想验证输入(字符串类型),该输入具有定界符(仅“,”或“;”),后跟多个特定长度,例如input1 = 444554; 445148,41412;和input2 = 414454、784554等。

1 个答案:

答案 0 :(得分:0)

我的猜测是,该表达式可能会验证:

^(.*?)=\K(\s*([0-9]{6})\s*[;,])+\s*$

,并且如果需要,我们可以添加更多边界,例如,可以根据需要使用输入名称更改(.*?)

如果您感兴趣,请在此demo中对表达式进行说明。

测试

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "^(.*?)=\\K(\\s*([0-9]{6})\\s*[;,])+\\s*$";
final String string = "input1=444554; 445148, 414121;\n"
     + "input1=444554; 445148, 41412;\n"
     + "input2=414454, \n"
     + "input1=444554; 44514, 414121;\n"
     + "input1=444554; 445141, 414121; 414121\n"
     + "input2:414454, ";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}

我认为

input1=444554; 445141, 414121; 414121

不需要,因为后面没有,;


编辑:

Demo