1

我有一个正则表达式,用于检查 0 到 999999 之间的值。

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

问题是 0.00 是有效的。我想将 0.01 设置为有效的最小金额。因此,输入 0.00 会使我无效。

我对正则表达式的黑魔法感到很害怕。任何人都可以帮忙吗?

谢谢。

4

1 回答 1

5

不要将逻辑放入正则表达式。它们用于匹配模式,而不是进行数值比较。

在 Perl 中,这将是:

if ( $s =~ /^((?:\d{1,3},)?\d{1,3})(\.\d{2})$/ && ( $s > 0 ) ) {
    # acceptable number
}

如果您正确使用正则表达式,它们就不是一门黑魔法。试图用它们进行数值计算并没有正确使用它们。

于 2012-12-20T21:17:07.867 回答