我有这个正则表达式:
^\$?(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$
但是当我有这样的金额时,它会失败:41022095.6
我错过了什么?
答案 0 :(得分:3)
您的正则表达式要么没有小数点,要么小数点后跟两个十进制数字。这取决于你想要什么,但是你可以通过这样做来使你的正则表达式符合建议的输入:
^\$?(\d{1,3}(\,\d{3})*|(\d+))(\.\d{1,2})?$
我将结尾附近的{2}
更改为{1,2}
,以允许小数点后的一位或两位小数。我还将.
更改为\.
,因为正则表达式中的普通.
表示“匹配任何字符”。
答案 1 :(得分:1)
点不是指“any character”,除非它在括号中?
答案 2 :(得分:0)
这一部分:"(.\d{2})?"
表示您的号码可以选择以“点后跟两位数”结尾,但它是可选的。由于您的示例中没有“dot后跟两位数字”而没有任何其他允许点的内容,因此不匹配。
此外,屁股duffymo指出,你可能想要逃离点,使其匹配句号,而不是任何角色。
答案 3 :(得分:0)
尝试将最后一位更改为(。\ d {1,2})?否则最后将需要2位数字。
此外,您可能想要转义'。'