求一个正则表达式, 大于0 的非负数或非负小数,小数点后保留4位 急 求一个正则表达式, 大于0 的非负数或非负小数,小数点后保留4位 急 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主意思表达不明。大于0 的非负数,就包含非负正数和非负小数。看这个能否满足^((([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){4})?)|\\d$ String regex = "([0][.](([0-9]{3}[1-9])|([0-9]{2}[1-9][0-9])|([0-9][1-9][0-9]{2})|([1-9][0-9]{3})))|([0-9]*[1-9][0-9]*([.][0-9]{4})?)";String[] data = {"0", "0000", "0.0000", "0.1000", "0.0100", "0.0010", "0.0001", "0.05", "1.0000", "10.0000", "10.0100", "10.25", "100", "123456"};for (String s : data) { System.out.printf("%s:%b\n", s, s.matches(regex));} 怎么不对的?给我个例子check一下,也许我考虑不周^\\d+(\\.\\d{1,4})?$ 是任意数字开头,然后小数部分.和4位数字可有可无结尾,这样就没法保证大于0除非你用正则判断后转成数字和0比较[0][.]([0-9]{3}[1-9])表示0.开始,然后小数部分是0-9任意3个数字和是1-9任意1个数字,目的是保证不小数部分不为0所以[0][.](([0-9]{3}[1-9])|([0-9]{2}[1-9][0-9]))是 |表示或者,然后是[0-9]任意2个数字和[1-9]任意1个数字和是[0-9]任意1个数字作为小数部分,依次类推,就是保证4位小数中有1数个是不为0这是对0.xxxx开头的判断最后是[0-9]*[1-9][0-9]*([.][0-9]{4})?表示[0-9]任意个数字和[1-9]和[0-9]任意个数字作为整数部分,然后是小数部分.和4位数字可有可无,这样可以保证整数至少有1个数字不为0,即保证整数部分大于0,小数部分可有可无,全为0也没关系 看楼主的意思看了半天。主要是觉得你太啰嗦了,不如直接说要一个大于0的有效数字,如果是小数,小数最多有4位。你想要的是这个吧:(([1-9][\d]*)(\.[\d]{1,4})?)|(0\.[\d]{1,4}) 我的理解是非负数,如果是有小数部分,必须是4位小数修改简单一些String regex = "(0*[.]((?!0000)\\d){4})|([0-9]*[1-9][0-9]*([.][0-9]{4})?)";String[] data = {"0", "0000", "00.0000", "0.1000", "0.0100", "0.0010", "0.0001", "0.05", "1.0000", "10.0000", "10.0100", "10.25", "100", "123456"};for (String s : data) { System.out.printf("%s:%b\n", s, s.matches(regex));} 理解LZ的意思了,非负数,有小数的话,最多为4位小数String regex = "(0*[.]((?!0)\\d|(?!00)\\d{2}|(?!000)\\d{3}|(?!0000)\\d{4}))|(\\d*[1-9]\\d*([.]\\d{1,4})?)";String[] data = {"0", "0000", "00.0000", "0.1000", "0.0100", "0.0010", "0.0001", "0.05", "1.0000", "10.0000", "10.0100", "10.25", "100", "123456"};for (String s : data) { System.out.printf("%s:%b\n", s, s.matches(regex));} atomhdp 正解 谢谢大虾们 给分 给分 atomhdp 小数位数不止四位啊 @atomhdp 这个正则校验不了小数是否大于0的 我可输入:0.00 请教一个题目,java io中的,并且将一首诗排序 疯狂java讲义第三章的用*画近似圆的问题(附自己代码求高手指点) java构造器和构造方法 在线等 JAVA 很小一个问题,望赐教. 关于J2SDK1.4.2_04的中文字体问题 请问Java程序的开发环境是什么? 菜鸟问题,关于类的destroy 新手问题一大堆 我想学JAVA,有几个问题想请教大家。 java 练习题 大家帮我看看还有什么地方可以改进的 大家也可以收集 大家帮我看看我那些方面还需要改进的 有人知道m4a的标签结构吗??
大于0 的非负数,就包含非负正数和非负小数。
看这个能否满足
^((([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){4})?)|\\d$
String[] data = {"0", "0000", "0.0000", "0.1000", "0.0100", "0.0010", "0.0001",
"0.05", "1.0000", "10.0000", "10.0100", "10.25", "100", "123456"};
for (String s : data) {
System.out.printf("%s:%b\n", s, s.matches(regex));
}
^\\d+(\\.\\d{1,4})?$ 是任意数字开头,然后小数部分.和4位数字可有可无结尾,这样就没法保证大于0
除非你用正则判断后转成数字和0比较[0][.]([0-9]{3}[1-9])表示0.开始,然后小数部分是0-9任意3个数字和是1-9任意1个数字,目的是保证不小数部分不为0
所以
[0][.](([0-9]{3}[1-9])|([0-9]{2}[1-9][0-9]))是 |表示或者,然后是[0-9]任意2个数字和[1-9]任意1个数字和是[0-9]任意1个数字作为小数部分,依次类推,就是保证4位小数中有1数个是不为0
这是对0.xxxx开头的判断最后是
[0-9]*[1-9][0-9]*([.][0-9]{4})?表示[0-9]任意个数字和[1-9]和[0-9]任意个数字作为整数部分,然后是小数部分.和4位数字可有可无,这样可以保证整数至少有1个数字不为0,即保证整数部分大于0,小数部分可有可无,全为0也没关系
你想要的是这个吧:(([1-9][\d]*)(\.[\d]{1,4})?)|(0\.[\d]{1,4})
修改简单一些
String regex = "(0*[.]((?!0000)\\d){4})|([0-9]*[1-9][0-9]*([.][0-9]{4})?)";
String[] data = {"0", "0000", "00.0000", "0.1000", "0.0100", "0.0010", "0.0001",
"0.05", "1.0000", "10.0000", "10.0100", "10.25", "100", "123456"};
for (String s : data) {
System.out.printf("%s:%b\n", s, s.matches(regex));
}
String regex = "(0*[.]((?!0)\\d|(?!00)\\d{2}|(?!000)\\d{3}|(?!0000)\\d{4}))|(\\d*[1-9]\\d*([.]\\d{1,4})?)";
String[] data = {"0", "0000", "00.0000", "0.1000", "0.0100", "0.0010", "0.0001",
"0.05", "1.0000", "10.0000", "10.0100", "10.25", "100", "123456"};
for (String s : data) {
System.out.printf("%s:%b\n", s, s.matches(regex));
}
正解 谢谢大虾们 给分 给分
小数位数不止四位啊