1、验证正整数
<script language=javascript>
function check(e){
var num=e.value;
re=/^\d+$/g;
if(re.test(num))
{
alert("正确")
}
else
{
alert("错误")
}
}
</script>
<input name=num onblur=check(this)>
2、验证正整数或2位小数或3位小数
<script language=javascript>
function check(e){
var num=e.value;
re=/^\d+(\.\d{2,3})?$/g;
if(re.test(num))
{
alert("正确")
}
else
{
alert("错误")
}
}
</script>
<input name=num onblur=check(this)>

解决方案 »

  1.   

    修改下
    第一种
    <script language=javascript>
    function check(e){
    var num=e.value;
    re=/^[1-9][0-9]*$/g;
    if(re.test(num))
    {
    alert("正确")
    }
    else
    {
    alert("错误")
    }
    }
    </script>
    <input name=num onblur=check(this)>
    第二种a
    <script language=javascript>
    function check(e){
    var num=e.value;
    re=/^[1-9][0-9]*(\.\d{0,2})?$/g;
    if(re.test(num))
    {
    alert("正确")
    }
    else
    {
    alert("错误")
    }
    }
    </script>
    <input name=num onblur=check(this)>
    第二种b
    <script language=javascript>
    function check(e){
    var num=e.value;
    re=/^[1-9][0-9]*(\.\d{0,3})?$/g;
    if(re.test(num))
    {
    alert("正确")
    }
    else
    {
    alert("错误")
    }
    }
    </script>
    <input name=num onblur=check(this)>
      

  2.   

    1.
    re=/^\d+$/g;                    //没有排除 0
    /^[0-9]*[1-9][0-9]*$/           //这个比上面的好些,不过若是 0100 前面的 0 没有去掉
    所以可以写的更狠些:  /^[1-9]\d*$/2.
    /^(([1-9]\d*)|0)\.\d[1-9]$/
    /^(([1-9]\d*)|0)\.\d\d[1-9]$/
      

  3.   

    new RegExp("^[1-9]\d");new RegExp("^[1-9](\d*|\d*[.]\d{1,2})$");new RegExp("^[1-9](\d*|\d*[.]\d{1,3})$");初学,写的不知道对不对
      

  4.   

    new RegExp("^[1-9]\d");  //这样只能匹配 10-99 的数字,其它的都匹配不到了。修正一下我对2的回复
    /^(([1-9]\d*(\.\d[1-9])?)|(0\.\d[1-9]))$/
    /^(([1-9]\d*(\.\d[1-9])?)|(0\.\d\d[1-9]))$/
      

  5.   

    1.
      /^[+]{0,1}\d{1,}.\d{2}$
    2.
      /^[+]{0,1}\d{1,}.\d{3}$/
      

  6.   

    1)
      ^[+]{0,1}[1-9]{1}\d*$
    2.a).
      ^[+]{0,1}\d{1,}.\d{2}$
    2.b).
      ^[+]{0,1}\d{1,}.\d{3}$
      

  7.   

    1)
      ^[+]{0,1}[1-9]{1}\d*$
    2.a).
      ^([+]{0,1}\d{1,}.\d{2}|[+]{0,1}[1-9]{1}\d*)$
    2.b).
      ^([+]{0,1}\d{1,}.\d{3}|[+]{0,1}[1-9]{1}\d*)$
      

  8.   

    1)
      ^[+]{0,1}[1-9]{1}\d*$
    2.a).
      ^([+]{0,1}\d{1,}.\d{0,2}|[+]{0,1}[1-9]{1}\d*)$
    2.b).
      ^([+]{0,1}\d{1,}.\d{0,3}|[+]{0,1}[1-9]{1}\d*)$
      

  9.   

    以上情况允许 "12.",以下则不允许:
    1)
      ^[+]{0,1}[1-9]{1}\d*$
    2.a).
      ^([+]{0,1}\d{1,}.\d{1,2}|[+]{0,1}[1-9]{1}\d*)$
    2.b).
      ^([+]{0,1}\d{1,}.\d{1,3}|[+]{0,1}[1-9]{1}\d*)$
      

  10.   

    TO: K_VVV_K(XHTML)
    1. [+]{0,1}  //完全可以用 \+? 代替,这样更简洁,同样 [1-9]{1} 可以写成[1-9]
    2.a 与 2.b 没有对 000.00 这样的小数做出判断,你的匹配范围不全。
      

  11.   

    梅老大
    ---------------------------------------------
    new RegExp("^[1-9]\d");  //这样只能匹配 10-99 的数字,其它的都匹配不到了。修正一下我对2的回复
    /^(([1-9]\d*(\.\d[1-9])?)|(0\.\d[1-9]))$/
    /^(([1-9]\d*(\.\d[1-9])?)|(0\.\d\d[1-9]))$/
    --------------------------------------------
    这个应该也有问题啊
    一位小数的时候不可以
      

  12.   

    再修改
    第2种 a  使小数末位不能为0,并且可以输入0.几。
    <script language=javascript>
    function check(e){
    var num=e.value;
    re=/^([1-9][0-9]*(\.(\d?)[1-9]?)*)|(0\.(\d?)[1-9]?)$/g;
    if(re.test(num))
    {
    alert("正确")
    }
    else
    {
    alert("错误")
    }
    }
    </script>
    <input name=num onblur=check(this)>
      

  13.   

    第2种 b<script language=javascript>
    function check(e){
    var num=e.value;
    re=/^([1-9][0-9]*(\.(\d{0,2})[1-9]?)*)|(0\.(\d{0,2})[1-9]?)$/g;
    if(re.test(num))
    {
    alert("正确")
    }
    else
    {
    alert("错误")
    }
    }
    </script>
    <input name=num onblur=check(this)>请梅老大指示检查。
      

  14.   

    2.验证大于零的正数。(整型 或 小数,例如:1、2、3.12、1.123、2.234 ……)
      备注:小数的位数限制在2位或3位两种情况,即两种情况各一个。
    嗯,可能是我误解了楼主的要求,不过他也没有说要一位小数位的呀。
    1、    /^[1-9]\d*$/
    2、a:  /^(([1-9]\d*(\.\d[1-9])?)|(0\.\d?[1-9]))$/
    2、b:  /^(([1-9]\d*(\.\d[1-9])?)|(0\.\d{,2}[1-9]))$/
    TO: hbhbhbhbhb1021(天外水火(我是SB,我要多努力)) 
    2.a: /^([1-9][0-9]*(\.(\d?)[1-9]?)*)|(0\.(\d?)[1-9]?)$/g
    2.b: /^([1-9][0-9]*(\.(\d{0,2})[1-9]?)*)|(0\.(\d{0,2})[1-9]?)$/g
    严格来说你这两个正则是错的:
    ^([1-9][0-9]*(\.(\d?)[1-9]?)*)  那我 12.34.56.78 就通过你的验证了。
    (0\.(\d?)[1-9]?)  这段正则没有针对 0.0 的判断,即 0.0 也通过你的验证
    最后再说一点,没必要用 g 模式了
      

  15.   

    COPY代码时没有注意,更正一下:
    1、    /^[1-9]\d*$/
    2、a:  /^(([1-9]\d*(\.\d?[1-9])?)|(0\.\d?[1-9]))$/
    2、b:  /^(([1-9]\d*(\.\d{,2}[1-9])?)|(0\.\d{,2}[1-9]))$/
      

  16.   

    meizz(梅花雪) 
    COPY代码时没有注意,更正一下:
    1、    /^[1-9]\d*$/
    2、a:  /^(([1-9]\d*(\.\d?[1-9])?)|(0\.\d?[1-9]))$/
    2、b:  /^(([1-9]\d*(\.\d{,2}[1-9])?)|(0\.\d{,2}[1-9]))$/
    ================================================================
    使用了以下代码进行了校验
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <h1>问题:</h1>
    1.验证大于零正整数(整型,例如:1、2 ……)。<br>
    2a.验证大于零的正数。(整型 或 小数,例如:1、2、3.1、3.12)即大于零的整数或小数,小数位“最大”为两位。<br>
    2b.验证大于零的正数。(整型 或 小数,例如:1、2、3.1、3.12、3.123)即大于零的整数或小数,小数位“最大”为三位。<br>
    <hr>
    <h1>梅花雪</h1>
    1、    /^[1-9]\d*$/<br>
    2、a:  /^(([1-9]\d*(\.\d?[1-9])?)|(0\.\d?[1-9]))$/<br>
    2、b:  /^(([1-9]\d*(\.\d{,2}[1-9])?)|(0\.\d{,2}[1-9]))$/<br>
    <SCRIPT LANGUAGE="JavaScript">
    function reTest(sIn,sPattern){
    if(sIn == "" || sPattern == "")
    return false;
    if(sPattern.test(sIn))
    return true;
    else
    return false;
    }
    document.write(reTest("1.1",/^(([1-9]\d*(\.\d?[1-9])?)|(0\.\d?[1-9]))$/) + "<br>");
    document.write(reTest("1.1",/^(([1-9]\d*(\.\d{,2}[1-9])?)|(0\.\d{,2}[1-9]))$/));
    document.write(reTest("1.123",/^(([1-9]\d*(\.\d{,2}[1-9])?)|(0\.\d{,2}[1-9]))$/));
    </SCRIPT>
    </BODY>
    </HTML>
    ====================================================================================2、b:  /^(([1-9]\d*(\.\d{,2}[1-9])?)|(0\.\d{,2}[1-9]))$/
    中梅老大似乎忘记来在d{,2}中写上0,即d{0,2},后两个测试为false
    改为/^(([1-9]\d*(\.\d{0,2}[1-9])?)|(0\.\d{0,2}[1-9]))$/可以通过
      

  17.   

    呵,谢谢梅花雪 snowalk(雪行者) 等大侠~ 马上结贴
      

  18.   

    实在对不起大家,才发现了个问题:第二个问题:我真正想要的是一个"大于零的,整数位不能大于5位,小数位不能大于2位"的正则表达式今天太忙,一直没来得急看这块,刚才要用了才发现,挺急, meizz(梅花雪) 等大侠帮忙再改一下,我愿意再另开100分贴答谢~~~
      

  19.   

    <script language=javascript>
    function check(e){
    var num=e.value;
    re=/^(([1-9]\d{0,4}(\.\d?[1-9])?)|(0\.\d?[1-9]))$/;
    if(re.test(num))
    {
    alert("正确")
    }
    else
    {
    alert("错误")
    }
    }
    </script>
    <input name=num onblur=check(this)>
    改完了
      

  20.   

    对meizz(梅花雪) 的结果修改如下,以满足你修改后的要求
    1、    /^[1-9]\d*$/
    2、a:  /^(([1-9]\d{0,4}(\.\d?[1-9])?)|(0\.\d?[1-9]))$/
    2、b:  /^(([1-9]\d*(\.\d{0,2}[1-9])?)|(0\.\d{0,2}[1-9]))$/
      

  21.   

    大于零的,整数位不能大于5位,小数位不能大于2位/^(([1-9]\d{0,4}(\.\d?[1-9])?)|(0\.\d?[1-9]))$/
      

  22.   

    原来的问题:
    第二个问题:我真正想要的是一个"大于零的,整数位不能大于5位,小数位不能大于2位"的正则表达式
    新问题:
    由于数据保存后,数据库为numberinc(5,2)类型的字段,如果数据为10,现在在我们的前台使用的控件中显示后会默认显示成10.00,这个时候因为使用
    ________________________________________________
    大于零的,整数位不能大于5位,小数位不能大于2位/^(([1-9]\d{0,4}(\.\d?[1-9])?)|(0\.\d?[1-9]))$/
    ________________________________________________
    这个表达式排除了".00"的情况,而对于我们现在的系统,可能保存后再修改的时候,其中大量的自动加的".00"就验证不过。
    所以现在需要:
    "大于零的,整数位不能大于5位,小数位不能大于2位"且允许".00"的情况通过。
      

  23.   

    已开新贴:http://community.csdn.net/Expert/topic/4325/4325419.xml?temp=.1918756 meizz(梅花雪) 等大侠可以去接分
      

  24.   

    大于零的,整数位不能大于5位,小数位不能大于2位"且允许".00"的情况通过/^(([1-9]\d{0,4}(\.\d{1,2})?)|(0\.((\d[1-9])|([1-9]\d))))$/允许 .00 ,但不允许 0.00