Javascript 正则表达式货币
Javascript regex currency
我正在尝试创建满足以下条件的正则表达式:
- 0.01 - 真
- 01.01 - 错误
- 122343.10 - 真
- 123,432.10 - 错误
- 123 - 错误
- 123423.1 - 错误
我做了以下但没有按预期工作
^[0\.|1-9\d*\.]\d{2,2}$/
使用https://regexr.com/进行测试
我会使用这个正则表达式:
^(?!0\d)\d+\.\d{2}$
这在开始时使用负先行来处理货币值不能以零开头的要求,如果另一个数字紧随其后。
这是另一种方法:
^(?:0|[1-9]\d*)\.\d{2}$
这是说要匹配一个零,后面没有小数点,或者如果后面是小数点前的另一个数字,则为 1-9。
Tim Biegeleisen 比我领先几分钟,但这是另一个(不太复杂的)解决方案:
(^[0]|^[1-9]+)\.\d{2}$
https://regex101.com/r/QJ3YyQ/2
编辑: 我刚刚意识到我错过了一个边缘案例。如果小数点前的数字包含零,则不匹配。这是一个更新的正则表达式:
(^[0]|^[1-9]\d*)\.\d{2}$
我正在尝试创建满足以下条件的正则表达式:
- 0.01 - 真
- 01.01 - 错误
- 122343.10 - 真
- 123,432.10 - 错误
- 123 - 错误
- 123423.1 - 错误
我做了以下但没有按预期工作
^[0\.|1-9\d*\.]\d{2,2}$/
使用https://regexr.com/进行测试
我会使用这个正则表达式:
^(?!0\d)\d+\.\d{2}$
这在开始时使用负先行来处理货币值不能以零开头的要求,如果另一个数字紧随其后。
这是另一种方法:
^(?:0|[1-9]\d*)\.\d{2}$
这是说要匹配一个零,后面没有小数点,或者如果后面是小数点前的另一个数字,则为 1-9。
Tim Biegeleisen 比我领先几分钟,但这是另一个(不太复杂的)解决方案:
(^[0]|^[1-9]+)\.\d{2}$
https://regex101.com/r/QJ3YyQ/2
编辑: 我刚刚意识到我错过了一个边缘案例。如果小数点前的数字包含零,则不匹配。这是一个更新的正则表达式:
(^[0]|^[1-9]\d*)\.\d{2}$