删除美元匹配正则表达式

时间:2014-05-01 14:55:31

标签: javascript php regex

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

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

我不再希望允许$符号,只是有效金额。我需要做出哪些改变?

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

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

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

要删除$ sign,只需删除^\$?

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