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)