【发布时间】:2012-11-30 16:15:15
【问题描述】:
我想我为我需要的东西创建了一个有效的正则表达式。只是想知道是否有人可以打破它或看到更短的编写方法。
正则表达式应验证以下内容...
- 美元符号可选
- 用括号表示负数,而不是减号
- 如果为负数,美元符号应在括号外
- 逗号是可选的
- 最大数量为 999999.99
- 最小值为 (999999.99)
- 不必提供小数,但如果提供,不超过两个 数字
所以这里有一些有效的例子......
9
$9
$0.99
($999,999.99)
(999999)
($999999)
(999,999)
99,999.9
这是我想出的:
^\$?(((\d{1,6}(\.\d{1,2})?)|(\d{1,3},\d{3}(\.\d{1,2})?)|\(((\d{1,6}(\.\d{1,2})?)|(\d{1,3},\d{3}(\.\d{1,2})?))\)))$
更正,我的规范是错误的,如果使用美元符号,它必须在括号内。
【问题讨论】:
-
1:这可能属于Code Review。 2:正则表达式是什么语言? 3:您对 i18n 有哪些考虑? 4:
1.000,00,3.000 -
你似乎有很多不必要的括号。您需要所有这些来匹配组吗?
标签: regex