Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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/3/templates/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
Regex 正则表达式值0,01和9.999.999.999.999,99_Regex - Fatal编程技术网

Regex 正则表达式值0,01和9.999.999.999.999,99

Regex 正则表达式值0,01和9.999.999.999.999,99,regex,Regex,我需要一个允许值介于0,01和9.999.999.999.999,99之间的正则表达式。有什么建议吗 我正在使用以下正则表达式: "(?:(?:[0-9]\\d{0,2})(?:\\.\\d{3})*(?:,\\d{2})|0,(?:[0-9]\\d|0[0-9]))" 但它允许0,00 感谢您的帮助如果您只想验证,那么这个正则表达式应该适合您 (?:(?!(?:0{1,3}\.){0,}0{1,3},00)(?:\d{1,3}\.){0,}\d?\d?(?:(0)|\d),\d(?(1)[1

我需要一个允许值介于0,01和9.999.999.999.999,99之间的正则表达式。有什么建议吗

我正在使用以下正则表达式:

"(?:(?:[0-9]\\d{0,2})(?:\\.\\d{3})*(?:,\\d{2})|0,(?:[0-9]\\d|0[0-9]))"
但它允许0,00


感谢您的帮助

如果您只想验证,那么这个正则表达式应该适合您

(?:(?!(?:0{1,3}\.){0,}0{1,3},00)(?:\d{1,3}\.){0,}\d?\d?(?:(0)|\d),\d(?(1)[1-9]|\d))
我已经对其进行了更新,因此如果值为0,00,它将不匹配,但将匹配10.000,00或1,00

正则表达式将匹配:

10.000,00
1,00
0,01 
10,00
9.999.999.999.999,99
正则表达式将不匹配:

0,00
0.000,00

我不确定正则表达式是否是这项工作最合适的工具,但我认为这正是您所寻找的

(?=[\d\.]*[1-9][\d\.]*,\d{2}|[\d\.]*,[\d\.]*[1-9][\d\.]*)(\d{1,3}\.)*\d{0,3},\d{2}
正向前瞻强制执行非零值

(?=[\d\.]*[1-9][\d\.]*,\d{2}|[\d\.]*,[\d\.]*[1-9][\d\.]*)
而其余的正好符合这个模式

(\d{1,3}\.)*\d{0,3},\d{2}

0,01-0,99是一种特殊情况。9.999.999.999.999,99也是如此。我会:

(0,((\d[1-9])|([1-9]\d)))|((([1-9]\d{0,2}(\.\d{3}){0,3})|([1-9](\.\d{3}){4})),\d{2})
编辑
正如Biffen所指出的,0,x0也是一个特例

也许单独使用正则表达式并不是解决这个问题的最佳方法。第一次通过只验证字符模式的正则表达式,然后是验证范围要求的非正则表达式逻辑,怎么样。你的意思是什么?我觉得你用的是相反的方式。如果是数字,则将其解析为数字。这不是正则表达式的工作。我会检查这个建议。谢谢AsaphHuStmpHrr,我们的想法是验证除0之外的小数点后两位的金额范围,00@jbutler483是的。这一直是令人头疼的问题的根源…这与1,00不匹配我很确定1,00应该是有效的[1-9]在这里是错误的,如果总计数为!=0@SamGreenhalgh:我已更新正则表达式以解决该问题。谢谢你指出这一点。我显然没有注意。不匹配10,00Sam,感谢链接对执行测试有很好的帮助。不匹配0,10,0,20,等等。所以0,-是一个特例,0,01是特例中的一个特例。