【问题标题】:remove dollar match regex删除美元匹配正则表达式
【发布时间】:2014-05-01 14:55:30
【问题描述】:

我一直在使用这个正则表达式来验证美元金额输入。

parsley-regexp="^\$?[0-9][0-9\,]*(\.\d{1,2})?$|^\$?[\.]([\d][\d]?)$"

我不想再允许 $ 符号,只允许有效金额。我需要进行哪些更改?

【问题讨论】:

  • 你的正则表达式匹配$1,,,,2,3.44我建议你查一些基础知识而不是使用盲目复制的代码

标签: javascript php regex


【解决方案1】:

简单删除 \$?(可选的转义美元符号 - 您需要将其转义,因为 $ 是保留的正则表达式字符):

// These are regex characters - keep them    v                    v
parsley-regexp="^\$?[0-9][0-9\,]*(\.\d{1,2})?$|^\$?[\.]([\d][\d]?)$"
// Remove these  ^^^                            ^^^

【讨论】:

  • 我猜\$之后的?也应该被删除
  • @donfuxx 当然 - 你完全正确,/^? 没有意义。
【解决方案2】:

要从表达式中删除 $ 验证,请使用:

parsley-regexp="[0-9][0-9\,]*(\.\d{1,2})?$|[\.]([\d][\d]?)$"

但是,您可能希望将表达式修复为仅接受有效的货币输入。例如:

parsley-regexp="^\$?((\d{1,3}(\,\d{3})*)|(\d+))(\.\d{1,2})?$";

阳性结果:1,234,456.00 美元 | 1.5 美元 | $1,00

负面结果:$1,23 | $1,,,.24

这就是它的工作原理

^\$?                 - begins with one $ symbol
((\d{1,3}(\,\d{3})*) - has 1-3 digits, followed by 1 or more occurrences of 'comma and 3 digits'
|(\d+))              - Or look for 1 or more digits
(\.\d{1,2})?         - one or more occurrences of . followed by 1-2 digits

要摆脱 $ 符号,只需删除 ^\$?:

parsley-regexp="((\d{1,3}(\,\d{3})*)|(\d+))(\.\d{1,2})?$";

【讨论】:

  • 非常感谢。正是我想要的。由于时间有限,这对我帮助很大。你周到的回答真的鼓励我在有更多时间的时候学习这个......
猜你喜欢
  • 2011-03-12
  • 2010-09-09
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-25
相关资源
最近更新 更多