我真的很糟糕的正则表达式,并想知道是否有人可以帮助我这个。我需要接受允许$,€和£的值,但不要求最小5.00(.00不是必需但允许)和2,000(逗号不是必需但允许)。正则表达式对于货币
的有效输入
$5
€5
£5
$5.00
5
1000
1,000
1,000.00
我真的很糟糕的正则表达式,并想知道是否有人可以帮助我这个。我需要接受允许$,€和£的值,但不要求最小5.00(.00不是必需但允许)和2,000(逗号不是必需但允许)。正则表达式对于货币
的有效输入
$5
€5
£5
$5.00
5
1000
1,000
1,000.00
如果你想允许像5.32£值的一些例子:
^[$€£]?(\d+([\.,]\d{2})?)$
如果不是:
^[$€£]?(\d+([\.,]00)?)$
一旦你”已检查它是否格式正确使用正则表达式,你可以继续检查5 < int(value) < 2000
是否使用了第一个返回的正则表达式组。
编辑:已经想过这个问题,这里有一个正则表达式,这将花费太多的边界的护理:
^[$€£]?((([1-5],?)?\d{2,3}|[5-9])(\.\d{2})?)$
逗号为数千;不是小数部分。 – 2011-05-15 20:32:44
嗯,我试过你的新编辑,当我测试模式时,我仍然得到错误的回报。 – Chad 2011-05-17 01:44:07
RegexMagic救援:
\b(?:[$£€])? *(?:2,?000|1,?[0-9]{3}|[1-9][0-9]{1,2}|[5-9])(?:\.[0-9]{1,2})?\b
你是否同意这样做的所有这在一个正则表达式(尽可能)不是一个非常好的主意?
这只是在客户端进行。 – Chad 2011-05-16 00:01:46
最低5.00或2,000? – sawa 2011-05-15 20:35:39