2011-06-20 35 views
0

可能重複:
Javascript replace undefined error shows!的Javascript取代未定義的錯誤末端而不是替代繼續

朋友,我得到了與這段代碼的成功:

var avidno = '800.123.1234'; 
var bodytext = document.body.innerHTML; 
var newbodytext; 
function validate() { 
var regex = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/; 

if (regex.test(avidno)) { 
    alert('bingo'); 
    var avidno_new = '<span>'+avidno+'</span>'; 
    var newbodytext = bodytext.replace(new RegExp(avidno, "g"), avidno_new); 
    document.body.innerHTML = newbodytext; 
    // Valid international phone number 
} else { 
    alert('uupss'); 
    // Invalid international phone number 
} 
} 
validate(); 

回答

0

試試這個(不確定關於跨瀏覽器):

newaltr = bodytext.replace(avidno, altrstr, "g"); 
+0

其作品:)在firefox,但鉻,即等等等等不工作 –

0

你的正則表達式包含^和$,它強制正則表達式只匹配整個字符串。這可能是替換失敗的原因。

試試這個(未經測試):

var avidno = '(800)123 1234'; 
var bodytext = document.body.innerHTML; 
var newaltr; 

function validate() { 
    var format = '\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})'; 
    var bodytext, altrstr, newtext; 

    if (RegExp('^' + format + '$').test(avidno)) { 
     // This could be done in a single line, but this way it's clearer 
     bodytext = document.body.innerHTML; 
     altrstr = '<span>'+avidno+'</span>'; 
     newtext = bodytext.replace(RegExp(format, 'g'), altrstr); 
     document.body.innerHTML = newtext; 

     // Valid international phone number 
    } else { 
     alert('uupss'); 
     // Invalid international phone number 
    } 
} 
validate(); 
相關問題