我发现this StackOverflow answer提供了一个正则表达式模式,用于匹配货币值,其中数字与,
分组,并且可能包含也可能不包含小数后跟两位小数。它还匹配包含在parens ()
中的负数。那种模式是:
^(\()?[0-9]+(?>,[0-9]{3})*(?>\.[0-9]{2})?(?(1)\))$
我希望匹配这个确切的模式,除了我还要考虑带有-
前缀而不是()
(但不是两者)的负数。因此,负数可以表示为-123.45
或(123.45)
,但不能表示为(-123.45)
或-(123.45)
。
我已经使用上面显示的模式创建了this regex101 page以及我想要匹配的一些匹配示例,以及一些我希望不匹配的示例。< / p>
例如,它应匹配:
123.45
1,234.56
(123.45)
-1.00
但不应该匹配:
123.456
-16.1
(-1.23)
我想也许我可以用^(\(|\-)?
开始模式以匹配(
或-
,然后条件构造将只关注匹配结束)
如果找到了一个开头(
,但这似乎不起作用。
答案 0 :(得分:2)