正则表达式中的 0.01 到 99.99

Nor*_*man 3 php regex

我正在尝试执行一个正则表达式,该表达式允许使用 0.01 到 99.99 之间的数字,但不允许使用 0.0 或任何空值(00.00 或 00.0 或 0.00 或 0.0)或负值。我已经非常接近了,但和往常一样,有些事情不太对劲。0.0 显示为有效。你能帮我解决这个问题吗?另外,你不需要保留我所做的表达:)

<?php
if (preg_match('/^[0-9]{1,2}[\.][0-9]{1,2}$/','0.0'))
{echo "Valid";}else{echo "Invalid";}
?>
Run Code Online (Sandbox Code Playgroud)

gna*_*arf 5

这是我的尝试:

/^(?=.*[1-9])\d{0,2}(?:\.\d{0,2})?$/
Run Code Online (Sandbox Code Playgroud)

首先,使用正向前瞻 ( (?=.*[1-9])) 来确保整个混乱中至少有一个“有效数字”,对于所有形式的 或其他形式都会0.0失败00.00。下一部分\d{0,2}允许小数点前有 0、1 或 2 位数字,然后是(?:)?包含文字小数的可选组,后跟 0、1 或 2 位数字:\.\d{0,2}。使用^and$通过仅从字符串的开头到结尾匹配来使该表达式完整。

一些快速测试字符串:

0.0 失败。
0 失败。
12 匹配。
123 失败。
05:00 匹配。
0.01 匹配。