Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 只允许使用数字和分隔符(“,”和“;”)的特定输入的正则表达式_Java_Regex - Fatal编程技术网

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

Java 只允许使用数字和分隔符(“,”和“;”)的特定输入的正则表达式,java,regex,Java,Regex,我想验证一个只包含分隔符的字符串类型的输入,或者;后跟若干特定长度,例如输入1=444554;445148, 41412; input2=414454、784554等。我猜这个表达式可能会验证: ^(.*?)=\K(\s*([0-9]{6})\s*[;,])+\s*$ 如果我们愿意,我们可以增加更多的边界,例如,我们可以改变。*?如有必要,使用输入名称 如果您可能感兴趣的话,这里将对表达式进行解释 测验 是不需要的,因为后面没有,或 编辑: 你必须比这更具体,并发表你有问题的尝试来获得任何乐趣

我想验证一个只包含分隔符的字符串类型的输入,或者;后跟若干特定长度,例如输入1=444554;445148, 41412; input2=414454、784554等。我猜这个表达式可能会验证:

^(.*?)=\K(\s*([0-9]{6})\s*[;,])+\s*$
如果我们愿意,我们可以增加更多的边界,例如,我们可以改变。*?如有必要,使用输入名称

如果您可能感兴趣的话,这里将对表达式进行解释

测验 是不需要的,因为后面没有,或

编辑:
你必须比这更具体,并发表你有问题的尝试来获得任何乐趣。具体长度的数字是指六位小数吗?这两个分隔符是否具有模式需要考虑的不同意义?input1=和input2=是否是要验证的输入的一部分?输入必须像input1一样以分隔符终止吗?您的示例包含空白,您在描述中没有提到。规则是什么?可能还有其他歧义。@JohnBollinger让我们假设允许的6位数字符串应该是string test=input1或string test=input2您现在明白我的意思了吗?是输入应始终以分隔符终止,且仅允许使用分隔符,或;不,我还没有完全明白你的意思。首先,请通过以下方式澄清要求。第二,由于input1=位是要验证的输入的一部分,请澄清该部分的要求。第三,您没有解决空白的问题;445148, 414121; 这样的话,你能修改一下你的回答吗?是的,它是正确的。
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