本文介绍了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();
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替换未定义的错误结束,但不能继续取代的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!