【发布时间】:2018-02-08 00:57:40
【问题描述】:
我有以下正则表达式仅验证整数,^\$?\d{0,10}(.(\d{0,2}))?$ 虽然它正确地将 12 识别为有效整数,但它还验证 12 美元是有效的。如果,我从正则表达式中删除第一个 $ 它也不起作用。
谢谢
【问题讨论】:
-
该正则表达式似乎用于验证资金输入(保留两位小数)。它不适用于整数,并且在任何情况下它至少有一个钱的错误(使用
.允许像$10x00这样的输入)。您可能想尝试更合适的方法,例如Convert.ToInt32。 -
这是稍微超出正则表达式的操作之一。什么构成有效整数会根据文化而发生巨大变化。美国和英国使用相反的小数和千位分隔符。通常 Parse 和 TryParse 用于验证整数 - 通过尝试将其解析为一个。
-
虽然我同意@Christopher 的观点,即 RegEx 不是验证整数的最佳工具,但可以基于 CultureInfo 构建正确的特定于语言环境的正则表达式(是否好主意有待讨论)。