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