日期:2014-05-16  浏览次数:20385 次

一百分,一个超级简单的问题
JScript code

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



结果:false

如果改成
JScript code
var a_reg = /^\d+(\.\d+)?$/;
a_reg.test(val)


结果为:true

val的值是25

请问大家两个问题,这个错误的原因是什么??????????第一个为什么不执行?
一样的用法,第二个为什么是true??????? RegExp是这样用的啊。。。错在哪里????????

我急着要用,希望大家速度一点,呵,先行谢过了!

------解决方案--------------------
第二个你没有忽略大小写啊
------解决方案--------------------
var reg = new RegExp("^\d+(\.\d+)?$",'i');
这里面的"^\d+(\.\d+)?$"是字符串里面有斜杠需要转义
var reg = new RegExp("^\\d+(\\.\\d+)?$",'i'),这就行了
------解决方案--------------------
期待结果。
------解决方案--------------------
俺是为分而来的。。。。。。。。
------解决方案--------------------
正确。
探讨
var reg = new RegExp("^\d+(\.\d+)?$",'i');
这里面的"^\d+(\.\d+)?$"是字符串里面有斜杠需要转义
var reg = new RegExp("^\\d+(\\.\\d+)?$",'i'),这就行了

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

------解决方案--------------------
字符串表达式中需要转义,如二楼
------解决方案--------------------
正则不太会,不过二楼的我试了一下可以
------解决方案--------------------
问 :javascript一般哪些需要转义? 字符串里的符号都要?
------解决方案--------------------
那样就有二义性了,成了转义字符咯。\\--->\
------解决方案--------------------
LZ先别结,我来接个分花花!
------解决方案--------------------
JScript code
var reg = new RegExp("^\\d+(\\.\\d+)?$",'i');
var a_reg = /^\d+(\.\d+)?$/;
alert(reg.test(23));
alert(a_reg.test(23));

------解决方案--------------------
每次接分都是1分、2分的
我自己都看不下去了
照这样的速度
2012我也接不到2星啊
楼主,帮帮忙
多给老衲点分吧
让老衲在2012到来之前
也能光荣的说:

水源,我也是两星啦。。。。。
------解决方案--------------------
以前我也遇到过这样的问题,\需要转义,用\\就可以了
var reg = new RegExp("^\\d+(\\.\\d+)?$",'i'),这就行了。
------解决方案--------------------
嗯,7楼
------解决方案--------------------
还算可以,学习啦
------解决方案--------------------
RegExp 对象
RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

直接量语法
/pattern/attributes

创建 RegExp 对象的语法:
new RegExp(pattern, attributes);

参数

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

返回值
一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。