代码之家  ›  专栏  ›  技术社区  ›  mpsbhat

Javascript中带有数字点的模式验证

  •  0
  • mpsbhat  · 技术社区  · 7 年前

    为什么下面的模式检查返回true?

    var pattern = /^[0-9]+(\.([0-9]{1,3})?)?$/;
    var val = "10.";
    var check = pattern.test(val); // returns true
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   gurvinder372    7 年前

    为什么下面的模式检查返回true?

    因为 val.toString() 10

    根据 spec 参数到 test 首先转换为字符串。

    让模式为ToString(Get(R,“source”))。

    另外,你还有一个额外的 ? 之后 ([0-9]{1,3})? ,也将其删除,然后尝试

    var pattern = /^[0-9]+(\.([0-9]{1,3}))?$/;
    var val = "10.";
    pattern.test(val); // returns false
    

    演示

    var pattern = /^[0-9]+(\.([0-9]{1,3}))?$/;
    var val = "10.";
    console.log(pattern.test(val));