判断金钱的正则表达式

判断内容有
1.必须为数字
2.可以有小数,小数点后只能有2位小数
3.可以有千分位符号,千分位必须用字符型的","逗号分隔
4.数字中间可以有空格,去掉空格后判断
5.可以直接依小数点开头,如".53",被解析成为"0.53"元

第1个回答  2011-04-20
(?<!\d)\d([ ]*\d([ ]*\d)?)?(?:[ ]*,?([ ]*\d))*(\.[ ]*\d[ ]*\d(?![ ]*\d))?
稍显遗憾,允许空串,如果能保证不是空串,则可用,若需强制排除空串,就罗嗦点儿如下:
((?<!\d)\d([ ]*\d([ ]*\d)?)?(?:[ ]*,?([ ]*\d))*(\.[ ]*\d[ ]*\d(?![ ]*\d))?|(\.[ ]*\d[ ]*\d(?![ ]*\d)))
第2个回答  2011-04-19
^(\d{1,3}(,\d{3})+?(\.\d{2})?|(\.\d{2})|\d)$ 带空格的暂时还没想清楚咋合并进来写追问

你这个只有,数字带上千分位逗号的时候才正确,我说的意思是可以带,也可以不带。不带千分位符号,你这个验证就不行了

追答

^((\d{1,3}(,\d{3})+?|\d+)(\.\d{2})?|(\.\d{2}))$

呵呵 不好意思 两种情况没有考虑到 你看下这个,这个还是没有考虑空格

本回答被提问者采纳