验证
只能输入整数如1,10,1000和小数如1.00,0.125,3.88
如果是
004
或者
1.0a

004.10

004.10ass
这种需要排除

解决方案 »

  1.   


    String s = "004";
    String reg = "^[1-9]\\d+$|^[0-9]\\.\\d+$";
    System.out.println(s.matches(reg));
      

  2.   

    不太会..尝试用java写的
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class RegexTest {
    public static void main(String[] args) throws Exception{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String src="";
    //Pattern p = Pattern.compile("[0]{1}\\.[0-9]+"); //取小数 [0]{1}\\.[0-9]+
    //Pattern p = Pattern.compile("[1-9][0-9]*\\.??[0-9]+");//取首位不为0的小数 与整数 100.03 或 100
    Pattern p = Pattern.compile("([1-9][0-9]*\\.??[0-9]*)|([0]{1}\\.[0-9]+)");
    while ((src=br.readLine())!=null) {
    Matcher m = p.matcher(src);
    if (m.find()) {
    System.out.println(src.equals(m.group(0))==true?"ok":"no");
    }else{
    System.out.println("no");
    }
    }
    }
    }
      

  3.   

    改了下  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String src = "";
    String regex = "([1-9][0-9]*(\\.??[0-9])*)|([0]{1}\\.[0-9]+)";
    while ((src = br.readLine()) != null) {
    System.out.println(src.matches(regex));
    }
    }
      

  4.   

    吃了个饭..发现还有不能匹配的
    现在好了,应该满足了String regex = "(^[1-9][0-9]*(\\.??[0-9])??$)|(^[0]{1}\\.{1}[0-9]+$)";
      

  5.   


    <input type="text" onchange="var a=value.match(/\d+(?:\.\d+)?/);value=(!!a)?new Number(a):''" />