小数的正则表达式

priestmoon 2009-10-05 10:17:30
保留两位有效数字的正小数(可无小数部分)

在网上搜了很多答案,发现普遍存在一个问题。
例如:[0-9]+(.[0-9][0-9]?)?

以上表达式有一个问题,就是不能正确验证整数部分开头为零的情况。
比如:010.34,0000023,0000.00

正常情况下,除非这个数的整数部分值为零,否则不可能出现开头为零的情况。
这个正则表达式怎么写?
...全文
401 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveofmylife 2009-10-05
  • 打赏
  • 举报
回复
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NumReg {
public static void main(String[] args){
String[] str="0.3 000312.12 0123.123".split(" ");
String regex="(?<=^0*(?=[1-9]*0?\\.))\\d+?\\.\\d{0,2}";
Pattern p=Pattern.compile(regex);
for(String s:str){
Matcher m=p.matcher(s);
while(m.find()){
System.out.println(s+"-->"+m.group());
}
}

}
}

测试结果:0.3-->0.3
000312.12-->312.12
0123.123-->123.12
阿_布 2009-10-05
  • 打赏
  • 举报
回复
^([1-9](?=\d+\.))|(0(?=\.))\d*$
loveofmylife 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 priestmoon 的回复:]


这位兄弟,我是要把012.34排除掉啊,呵呵~
意思没表达清楚,抱歉啊。。。
[/Quote]
晕,我还以为你要保留呢,理解错了,一会回来在写一下,呵呵
priestmoon 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 viszl 的回复:]
上面2楼的正则写的大意了换成这个
Java codeString regex="\\d+\\.\\d{0,2}";
匹配两位小数,可以没有小数或者一位
[/Quote]

这位兄弟,我是要把012.34排除掉啊,呵呵~
意思没表达清楚,抱歉啊。。。
priestmoon 2009-10-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhoupuyue 的回复:]
^[1-9]\d*\.\d*$
[/Quote]

0.25怎么办?
loveofmylife 2009-10-05
  • 打赏
  • 举报
回复
上面2楼的正则写的大意了换成这个
String regex="\\d+\\.\\d{0,2}";

匹配两位小数,可以没有小数或者一位
loveofmylife 2009-10-05
  • 打赏
  • 举报
回复
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NumReg {
public static void main(String[] args){
String str="012.34";
String regex="\\d+\\.\\d{2}?";
Pattern p=Pattern.compile(regex);
Matcher m=p.matcher(str);
while(m.find()){
System.out.println(m.group());
}
}
}

测试结果:012.34
阿_布 2009-10-05
  • 打赏
  • 举报
回复
^[1-9]\d*\.\d*$

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧