0

谁能给我具有以下格式的货币正则表达式:

1000 - valid
1,000 - valid
1,000.00 or 1000.00 - valid.

这意味着,数字可能或可能不包含每 3 位数的逗号 (,) 分隔符。

数字可能或可能不包含一个点 (.),如果它带有一个点 (.),它应该在小数点后显示至少 1 个数字。

最后,它应该只是数字字符。如果我需要明确我的问题,请提出建议。

4

2 回答 2

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

“在一到三位数之间,然后是任意数量的以逗号为前缀的三位数组任意数量的不以所述逗号为前缀的三位数组(不允许混合两种组),然后是可选的一组或以点为前缀的两位数字。”

注意:此正则表达式假定您要根据问题中概述的标准验证整个字符串。如果您想使用它在较长的字符串中查找此类数字,则需要从表达式的开头和结尾删除^and 。$

于 2012-09-17T07:10:46.033 回答
1

像这样的东西应该可以工作:(,?\d{3})+(\.\d{2})?. 正则表达式将尝试匹配前面有可选逗号的 3 位数字序列,然后最后是可选的小数点和 2 位数字。

请参阅教程以获取更多信息。

编辑:根据下面的评论,上述正则表达式可能会失败。我建议首先使用这个正则表达式:^[\d][\d.,]+$确保只有数字、千位和小数分隔符。此正则表达式还将确保数字以数字开头,而不是其他任何内容。您很可能有一个可以处理所有事情的正则表达式,但它很可能非常复杂。

于 2012-09-17T07:08:43.660 回答