var reg = new RegExp("^\d+(\.\d+)?$",'i');
reg.test(val)
结果:false如果改成
var a_reg = /^\d+(\.\d+)?$/;
a_reg.test(val)结果为:trueval的值是25请问大家两个问题,这个错误的原因是什么??????????第一个为什么不执行?
一样的用法,第二个为什么是true???????  RegExp是这样用的啊错在哪里????????我急着要用,希望大家速度一点,呵,先行谢过了!

解决方案 »

  1.   

    var reg = new RegExp("^\d+(\.\d+)?$",'i');
    这里面的"^\d+(\.\d+)?$"是字符串里面有斜杠需要转义
    var reg = new RegExp("^\\d+(\\.\\d+)?$",'i'),这就行了
      

  2.   

    /regexp/img,//是一种声明正则表达式的简单形式,且正如2楼所说,里面的\不需要转义,而new RegExp需要转义,//后面的可选参数有img,分另为忽略大小 写、多行模式、全局匹配
      

  3.   

     问 :javascript一般哪些需要转义? 字符串里的符号都要?
      

  4.   

    var reg = new RegExp("^\\d+(\\.\\d+)?$",'i');
    var a_reg = /^\d+(\.\d+)?$/;
    alert(reg.test(23));
    alert(a_reg.test(23));
      

  5.   

    以前我也遇到过这样的问题,\需要转义,用\\就可以了
    var reg = new RegExp("^\\d+(\\.\\d+)?$",'i'),这就行了。
      

  6.   

    RegExp 对象
    RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。直接量语法
    /pattern/attributes创建 RegExp 对象的语法:
    new RegExp(pattern, attributes);参数参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。返回值
    一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。抛出
    SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g"、"i" 和 "m" 之外的字符,抛出该异常。TypeError - 如果 pattern 是 RegExp 对象,但没有省略 attributes 参数,抛出该异常。摘自w3school
      

  7.   

    定义正则时,如果是用字符串方式定义的话,因为“\”在字符串里面是表示转义的,那么“\d”这样的字串就被转义成别的字符了,所以你要表示\d的话,就需要用“\\d”表示一个“\d”,用“\\\\”表示一个“\”