也许是这个re的资源没释放... 嘿嘿,貌似的确是这样的... <script type="text/ecmascript"> function a(val) { var re = /^\d+$/g; return re; }; alert(a(5) === a(5)); </script>
var re=new RegExp("^\\d+$","g"); 用2楼滴方法试过么?!
俺用TT,不用FF,帮不上忙,嘿
看来FF在相同的作用域下的/.../;是相同的...<script type="text/ecmascript"> var a = function (val) { var global = /^\d+$/g; return global; }; var b = function (val) { var global = /^\d+$/g; return global; }; alert(a() === a()); alert(a() === b()); </script>
也许是这个re的资源没释放... 但ff为什么没释放呢function a() { var re = /^\d+$/g; alert(re.lastIndex); alert(re.test(2)); var re = /^\d+$/g; alert(re.lastIndex); alert(re.test(3)); } a(); a(); a(); 奇怪啊奇怪 不明白ff这样处理的原因
这个好用...:D,毕竟它创建了不同的对象... <script type="text/ecmascript"> var a = function (string) { var global = new RegExp("^\\d+$", "g"); return global.test(string); }; alert(a(5) && a(6)); </script>
var a = function (val) { var global = new RegExp("^\\d+$","g"); return global; }; var b = function (val) { var global = new RegExp("^\\d+$","g"); return global; }; alert(a() === a()); alert(a() === b());
<script type="text/ecmascript"> function a() { //FF var re = /^\d+$/g; //这里是一个RegExp对象 alert(re.lastIndex); alert(re.test(2)); var re = /^\d+$/g; //这里是一个RegExp对象 alert(re.lastIndex); alert(re.test(3)); } a(); //用了那俩对象 a(); //还用那俩对象 a(); //还用那俩对象 //由此得出,FF人家专一:性情中人 </script>
用这个
JScript lastIndex 属性
请参阅
RegExp 对象的属性 | 正则表达式语法应用于:RegExp 对象
要求
版本3
返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。RegExp.lastIndex
与该属性有关的对象总是全局 RegExp 对象。说明
lastIndex 属性是基于零的,也就是说,第一个字符的索引是零。其初始值为 -1,不论何时产生一个成功匹配,它的值都被修改。lastIndex 属性被 RegExp 对象的 exec 和 test 方法,以及 String 对象的 match、replace、和 split 方法修改。下面的规则应用于 lastIndex 的值: 如果还没有匹配,则 lastIndex 被设置为 -1.
如果 lastIndex 比字符串的长度大,则 test 和 exec 失败,并且 lastIndex 被设置为 -1。
如果 lastIndex 等于字符串的长度,且模式与空字符串匹配,则正则表达式匹配。否则,匹配失败并且 lastIndex 被重置为 -1。
否则,lastIndex 被设置为紧接最近的匹配的下一个位置。
嘿嘿,貌似的确是这样的...
<script type="text/ecmascript">
function a(val) {
var re = /^\d+$/g;
return re;
};
alert(a(5) === a(5));
</script>
用2楼滴方法试过么?!
var a = function (val) {
var global = /^\d+$/g;
return global;
};
var b = function (val) {
var global = /^\d+$/g;
return global;
};
alert(a() === a());
alert(a() === b());
</script>
{
var re = /^\d+$/g;
alert(re.lastIndex);
alert(re.test(2));
var re = /^\d+$/g;
alert(re.lastIndex);
alert(re.test(3));
}
a();
a();
a(); 奇怪啊奇怪
不明白ff这样处理的原因
这个好用...:D,毕竟它创建了不同的对象...
<script type="text/ecmascript">
var a = function (string) {
var global = new RegExp("^\\d+$", "g");
return global.test(string);
};
alert(a(5) && a(6));
</script>
var global = new RegExp("^\\d+$","g");
return global;
};
var b = function (val) {
var global = new RegExp("^\\d+$","g");
return global;
};
alert(a() === a());
alert(a() === b());
<script type="text/ecmascript">
function a() {
//FF
var re = /^\d+$/g; //这里是一个RegExp对象
alert(re.lastIndex);
alert(re.test(2));
var re = /^\d+$/g; //这里是一个RegExp对象
alert(re.lastIndex);
alert(re.test(3));
}
a(); //用了那俩对象
a(); //还用那俩对象
a(); //还用那俩对象
//由此得出,FF人家专一:性情中人
</script>