^\$?(\d{1,3},?(\d{3},?)*\d{3}(\.\d{0,2})?|\d{1,3}(\.\d{0,2})?|\.\d{1,2}?)$
我实际上发现这可以帮助我验证$的金额。问题是我希望在0 $到99.99 $之间进行有限的验证。也不接受01.20和10.1的数额,但是1.20 $ 10.10。
我可以在这个正则表达式上修改一些内容。 这也是我的PHP代码的使用。我知道我需要在正则表达式上加上一个强烈反对才能使它在php上工作。感谢。
答案 0 :(得分:0)
^(?:\d{1,2}(?:\.\d{2})?|\.\d{2})\$$
^
在行首处断言位置(?:\d{1,2}(?:\.\d{2})?|\.\d{2})
匹配以下任一选项
\d{1,2}(?:\.\d{2})?
选项1
\d{1,2}
匹配数字一两次(?:\.\d{2})?
可选择匹配小数点后跟两位数字\.\d{2}
选项2.匹配小数点后跟两位数字\$
按字面意思匹配$
$
断言行尾的位置答案 1 :(得分:0)
这是我的建议:
^(?:0|[1-9]\d{0,2})(?:,?\d{3})*(?:\.\d{2})?\$$
^
在行的开头断言位置(?:0|[1-9]\d{0,2})
匹配0或非零数字,后跟可选数字(?:,?\d{3})*
匹配可选的千位分隔符,后跟三位数字零次或多次(?:\.\d{2})?
可选地匹配小数位后跟两位数字\$
字面上符合美元符号$
在一行结尾处断言位置小提琴:Live Demo