Javascript替换未定义的错误结束,但不能继续取代 [英] Javascript replace undefined error ends but not replace continues

查看:91
本文介绍了Javascript替换未定义的错误结束,但不能继续取代的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能存在重复:

Javascript替换未定义的错误显示!


我成功的朋友用这段代码:

  var avidno ='800.123.1234'; 
var bodytext = document.body.innerHTML;
var newbodytext;
函数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;
//有效的国际电话号码
}其他{
alert('uupss');
//国际电话号码无效
}
}
validate();


解决方案

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

试试这个(未经测试):

  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)){
//这可以在一行中完成,但这样更清晰
bodytext = document.body.innerHTML;
altrstr ='< span>'+ avidno +'< / span>';
newtext = bodytext.replace(RegExp(format,'g'),altrstr);
document.body.innerHTML = newtext;

//有效的国际电话号码
}其他{
alert('uupss');
//国际电话号码无效
}
}
validate();


Possible Duplicate:
Javascript replace undefined error shows!

Friends i got success with this piece of code:

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

解决方案

Your regex includes ^ and $, which force the regex to match only the whole string. That's probably the reason why replace fails.

Try this (untested):

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

这篇关于Javascript替换未定义的错误结束,但不能继续取代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆