Javascript替换未定义的错误结束,但不替换继续

Javascript replace undefined error ends but not replace continues

本文关键字:替换 继续 错误 未定义 Javascript 结束      更新时间:2023-09-26

可能重复:
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();

试试这个(不确定跨浏览器):

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

您的正则表达式包括^和$,它们强制正则表达式只匹配整个字符串。这可能就是更换失败的原因。

试试这个(未经测试):

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();