java正则表达式 数字匹配

whb851423 2009-02-28 12:25:40
求一JAVA正则表达式 要求输入只能是数字,包括小数,前后位数可以调节
如 小数点前3位后2位 则匹配范围是 0.00~~999.00 其中整数也在内。 如999,0都应该匹配
...全文
5079 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
customer1991 2009-09-27
  • 打赏
  • 举报
回复
飘过
gongmingwind 2009-04-30
  • 打赏
  • 举报
回复
4楼 magicxin031 说的是对的,小数中的点不能直接用.进行匹配,需要转义为\\.
p3pmm 2009-03-02
  • 打赏
  • 举报
回复
正则蛮难学好的,学习一下
chen08206416 2009-03-02
  • 打赏
  • 举报
回复
顶 三楼 正则表达市、不难 就是有点烦琐
salana 2009-03-02
  • 打赏
  • 举报
回复
/^(\d{1,3}.\d{2})$|^(\d{0,3})$/
jimeshengxian 2009-03-01
  • 打赏
  • 举报
回复
99999999999999.999999999
Csdbfans 2009-03-01
  • 打赏
  • 举报
回复
这个正则还是蛮难学好的,up一下
socool627 2009-03-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 magicxin031 的回复:]
楼主没有说清楚,不知道小数点前2位后3位的话,0.0是否算匹配,这里我假设0.1不能匹配,0.10能匹配,00.0不能匹配,00.10匹配.
大致如此

Java code
//一JAVA正则表达式 要求输入只能是数字,包括小数,前后位数可以调节
//如 小数点前3位后2位 则匹配范围是 0.00~~999.00 其中整数也在内。 如999,0都应该匹配
//楼主没有说清楚,不知道小数点前2位后3位的话,0.0是否算匹配,这里我假设0.1不能匹配,0.10能匹配,00…
[/Quote]up
lzp765 2009-03-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 magicxin031 的回复:]
楼主没有说清楚,不知道小数点前2位后3位的话,0.0是否算匹配,这里我假设0.1不能匹配,0.10能匹配,00.0不能匹配,00.10匹配.
大致如此

Java code
//一JAVA正则表达式 要求输入只能是数字,包括小数,前后位数可以调节
//如 小数点前3位后2位 则匹配范围是 0.00~~999.00 其中整数也在内。 如999,0都应该匹配
//楼主没有说清楚,不知道小数点前2位后3位的话,0.0是否算匹配,这里我假设0.1不能匹配,0.10能匹配,00…
[/Quote]
up
xsj1983 2009-03-01
  • 打赏
  • 举报
回复
飘过~~ regex很久没写过了
magicxin031 2009-03-01
  • 打赏
  • 举报
回复
楼主没有说清楚,不知道小数点前2位后3位的话,0.0是否算匹配,这里我假设0.1不能匹配,0.10能匹配,00.0不能匹配,00.10匹配.
大致如此

//一JAVA正则表达式 要求输入只能是数字,包括小数,前后位数可以调节
//如 小数点前3位后2位 则匹配范围是 0.00~~999.00 其中整数也在内。 如999,0都应该匹配
//楼主没有说清楚,不知道小数点前2位后3位的话,0.0是否算匹配,这里我假设0.1不能匹配,0.10能匹配,00.0不能匹配,00.10匹配
import java.io.*;
import java.util.regex.*;
public class MatcherNumber{
public static void main(String[] args){
BufferedReader bf = null;
int bp = 0;
int ap = 0;
String snum = null;
boolean end = false;
try{
bf = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Please input the digits before the point:");
String bpstr = bf.readLine();
//其实也可以不用转成int型,直接用也可以,但输入一定要是数值。
//如果做的好一点可以再写个正则表达式做下bpstr和bp的数字匹配。
bp = Integer.valueOf(bpstr);
if(bp<=1){
System.out.println("wrong digits!");
return;
}
System.out.println("Please input the digits after the point:");
String apstr = bf.readLine();
ap = Integer.valueOf(apstr);
if(ap<=1){
System.out.println("wrong digits!");
return;
}
while(!end){
System.out.println("Please input a number:");
snum = bf.readLine();
if(snum.equals("")||snum.equalsIgnoreCase("exit"))end = true;
else checkNum(bp,ap,snum);
}
bf.close();
}catch(IOException ie){
ie.printStackTrace();
}
}
//其实checkNum完全可以写在try中,这里我只是为了看得清楚点。
public static void checkNum(int bp,int ap,String snum){
Matcher m = Pattern.compile("[0-9]{1,"+bp+"}\\.[0-9]{"+ap+"}").matcher(snum);
if(m.matches())System.out.println("ture!the number is in range!");
else System.out.println("false!the number is out of range");
}
}
havelock 2009-03-01
  • 打赏
  • 举报
回复
飘过~~ regex很久没写过了。

3楼的能跑的话就是它了。。。。


starnight_cbj 2009-02-28
  • 打赏
  • 举报
回复
/^(\d{1,3}.\d{2})$|^(\d{1,2})$/
qiyuan371 2009-02-28
  • 打赏
  • 举报
回复
你看这个行不!
/^[0-9]{3}.[0-9]{1,2}$/

67,541

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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