求正则表达式。匹配小数可有可无,最多两位小数,必须大于零

作者:enenba | 发表于:2012-01-10 23:44 | 分类:正则表达式

问:求一个正则表达式。要求:小数可有可无,最多两位小数,必须大于零,急,在线等
答:^(?!0+(?:\.0+)?$)(?:[1-9]\d*|0)(?:\.\d{1,2})?$
 
采用否定式向前查看后
(?!……)  是否定式向前看
(?:……)  后向引用内容
 0+(?:\.0+)?就是说当以0开头时后面要接上“.”并且要有一个以上的0接在“.”后 如00.0   0.0   000
 (?!0+(?:\.0+)?$) 就是都不匹配上式开头 如00开头的都不能匹配
 [1-9]\d*|0 匹配一个非0数字开头的数字或匹配一个0。 如: “1000154” “0”
 (?:\.\d{1,2})? 匹配以“.”开头并且后面要有一到两个数字。 如: “.01” “.00”  “.90”

附件下载/演示源码:
2.htm10.36KB

上一篇: RegexBuddy是个非常好的正则工具   |   下一篇:php正则替换回调函数preg_replace_callback()初解» 标签: 正则 正则匹配 正则表达式

评论: