Regex 正则表达式值0,01和9.999.999.999.999,99
我需要一个允许值介于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-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是特例中的一个特例。