有這樣一段程式碼:if (RegExp.test(num))的結果,在IE中每次都為TRUE,而在Fire fox中若第一次為True,第二次必為False,後面交替出現。大概看了一下過往的解決方法: 方法一:把if (RegExp.test(num))改為if (num.match(RegExp)) 也不知道都驗證過沒有,反正我試過都達不到兼容效果,其實最根本的問題不是採取哪種正則對象,而是表達式中的"g"導致在Firefox中的效果和IE不一致, Firefox將該RegExp當成全域變數來處理了,所以最簡單有效的辦法就是將var RegExp=/^(-)?[0-9]*$/g 改為var RegExp=/^(-)?[0-9]*$/ ,好的解決方法不在乎複雜,而是對症下藥,這樣的情況畢竟不常見。 function isNum(num){ var RegExp=/^(-)?[0-9]*$/g;
方法二:使用RegExp物件處理,也就是new RegExp("^(-)?[0-9]*$")
if(num.length==0){
return false;
}
if (RegExp.test(num)){
return true;
}else{
return false;
}
}