Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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,我需要一个可以验证以下内容的正则表达式: 验证是否不存在空值或空格 123 | 2.3 | 3.6 验证所有数字都不是负数 123 | 0.0 | 2.3 验证每个数字是否为9位或更少,小数点后不计算数字 123 | 333.32 | 3.4 以下是我的尝试: ^(?:[^ |]+(?:\\|[^ |]+){0,2})$ 我想到了这个: ^(\d{1,9}(?:\.\d+)?)\|(\d{1,9}(?:\.\d+)?)\|(\d{1,9}(?:\.\d+)?)$ 第一个号码: (\d{1,9}

我需要一个可以验证以下内容的正则表达式:

验证是否不存在空值或空格

123 | 2.3 | 3.6

验证所有数字都不是负数

123 | 0.0 | 2.3

验证每个数字是否为9位或更少,小数点后不计算数字

123 | 333.32 | 3.4

以下是我的尝试:

^(?:[^ |]+(?:\\|[^ |]+){0,2})$

我想到了这个:

^(\d{1,9}(?:\.\d+)?)\|(\d{1,9}(?:\.\d+)?)\|(\d{1,9}(?:\.\d+)?)$
第一个号码:

(\d{1,9}(?:\.\d+)?)
\d{1,9}
表示1位,最多9位<代码>(?:\。\d+)表示可能的小数点和小数点后的一个或多个数字

对于后面的数字
\\\\124;
表示一个管道,之后我包含与第一个数字
相同的正则表达式(\d{1,9}(?:\.\d+))

我将每个数字封装在
()
中,使每个数字成为一个捕获组。如果您不需要捕获数字,只需验证,此选项也可以:

^\d{1,9}(?:\.\d+)?(?:\|\d{1,9}(?:\.\d+)?){2}$

小数点是否有限制?从您的第一次尝试来看,它们看起来介于0和2之间。是的,小数位数是有限的。我如何验证它们始终与number | number | numbers在一起?此正则表达式就是这样做的。或者你的意思是它们总是三个数字?是的,总是三个数字,例如12 | 12.4 | 12.5纠正12不正确12 | 6不正确,小数点后可以有多少位数?无论小数点后有多少位数