正则表达式可选浮点数

regex optional floating decimal

我有一个 MySQL double(10,2),我应用了以下正则表达式:/^\d{0,10}\.\d{2}$/

我没有通过 1234 的验证,我假设小数点是必需的(我知道 ? 是不存在的可选字符)。

在这个正则表达式中我应该把 ? 字符放在哪里?

谢谢

要解决眼前的问题,您需要围绕 \.\d{2}optional group 模式 - (\.\d{2})?:

/^\d{0,10}(\.\d{2})?$/

它匹配从字符串开头开始的 0 到 10 位数字,然后要么需要字符串结尾,要么需要 . 和 2 位数字。

下一步,您可以使用 {1,2} limiting quantifier:

在小数部分允许 1 或 2 位数字
/^\d{0,10}(\.\d{1,2})?$/

甚至使用 non-capturing group 获得一些非常微小的效率提升:

/^\d{0,10}(?:\.\d{1,2})?$/