朋友,我取得了一些成功,但在替换过程中出现了未定义的错误:
这是我的新代码:
var avidno = '(800)123 1234';
var bodytext = document.body.innerHTML;
function validate () {
var regex = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/gi;
if (regex.test(avidno)) {
alert('bingo');
var altrstr = '<span>'+avidno+'</span>';
//var newaltr = bodytext.replace(avidno, altrstr);
//var str_count = bodytext.match(avidno).length; //4 matched
document.body.innerHTML = newaltr;
alert(avidno.length);
find_count = avidno.length;
for(var i=0;i<find_count;i++)
{
var newaltr = bodytext.replace(avidno, altrstr);
}
// Valid international phone number
} else {
alert('uupss');
// Invalid international phone number
}
}
validate();
最佳答案
创建变量之前,您正在使用变量newaltr
。
该代码的另一个问题是,您要在循环中进行替换,但是要对一个变量进行替换,然后将结果存储在另一个变量中。您将始终在原始文件上进行替换,因此仅使用最后一个替换文件。
您正在使用avidno
中字符串的长度来确定要进行多少次替换,这似乎不合逻辑。