正则表达式使用Javascript验证巴西货币

Mar*_*ato 4 javascript regex validation currency

我需要使用Javascript验证包含巴西钱(其名称为"Real")的一些表单文件.它具有以下格式:

            0,01
            0,12
            1,23
           12,34
          123,45
        1.234,56
       12.235,67
      123.456,78
    1.234.567,89
   12.345.678,90
  123.456.789,01
1.234.567.890,12
Run Code Online (Sandbox Code Playgroud)

我的正则表达式知识很弱,有人可以帮助我吗?

Mar*_*eed 10

这样做你想要的吗?

^\d{1,3}(?:\.\d{3})*,\d{2}$
Run Code Online (Sandbox Code Playgroud)

这表示"1到3位数字,可选地后面跟着一个以句号开头的任意数量的三位数组,后面跟一个逗号和两个以上的数字." 如果要允许示例中存在的前导空格,请添加\s*到前面:

^\s*\d{1,3}(?:\.\d{3})*,\d{2}$
Run Code Online (Sandbox Code Playgroud)

编辑:正如@ElRonnoco指出的那样,上面的正则表达式接受前导零(例如010.100,00).要禁止这些,您可以使用这个更长的版本:

^\s*(?:[1-9]\d{0,2}(?:\.\d{3})*|0),\d{2}$
Run Code Online (Sandbox Code Playgroud)

编辑2上述正则表达式都匹配包含单个货币金额的字符串,而不是其他任何内容.从问题中不清楚这是不是意图.

编辑3要允许没有小数部分或只有一个十进制数字的数字,请将其更改为:

^\s*(?:[1-9]\d{0,2}(?:\.\d{3})*|0)(?:,\d{1,2})?$
Run Code Online (Sandbox Code Playgroud)