负会计货币价值的正则表达式?

Posted

技术标签:

【中文标题】负会计货币价值的正则表达式?【英文标题】:Regular Expression for negative accounting money values? 【发布时间】:2021-12-22 13:56:01 【问题描述】:

我很难找到解决负会计/货币价值的方法,如下所示:

(1.00)

(100)

(100.00)

我已经尝试过了,但由于某种原因,它允许使用诸如“abcd”之类的值。

^0\.00||(\(\d*(?:\.\d1,2)?\))?$

【问题讨论】:

【参考方案1】:

它不匹配abcd,但是如果你测试字符串是否匹配,那么它会是真的,因为有匹配的位置。

由于字符串末尾的所有数字都是可选的,因此有一个可以匹配的位置。

|| 也匹配 0.00 之后、数字部分之前和之后的位置以及 abcd 中的每个位置或空字符串。


您可以将|| 更改为|,至少匹配一个数字,并为两种选择使用交替:

^(?:0\.00|\(\d+(?:\.\d1,2)?\))$
^ 字符串开始 (?: 交替的非捕获组 0\.00匹配0.00 |或者 \(\d+(?:\.\d1,2)?\) 匹配 ( 1+ 位,可选 . 和 1-2 位和 ) )关闭非捕获组 $字符串结束

Regex demo

【讨论】:

以上是关于负会计货币价值的正则表达式?的主要内容,如果未能解决你的问题,请参考以下文章

验证货币类型的正则表达式

正则表达式 示例汇总

负前瞻正则表达式贪婪(为啥.*?太贪婪)

Java 正则表达式:负前瞻

如何用正则表达式限制只输入整数(包括负整数和0)

负前瞻正则表达式