RegularExpression,货币为美元或加拿大元。证实

时间:2018-03-19 20:10:59

标签: php regex

^\$?(\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上工作。感谢。

2 个答案:

答案 0 :(得分:0)

See regex in use here

^(?:\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