我正在尝试用javascript替换html文档中特定电话号码的所有实例。
电话号码可能有多种形式:
888-888-8888
(888)-888-8888
(888)888-8888
http://jsfiddle.net/2ARgD/2/
$(document).ready(function(){
function p(a,b,element){
if(!element)element=document.body;
var nodes=$(element).contents().each(function(){
if(this.nodeType==Node.TEXT_NODE){
var r=new RegExp(a,'gi');
this.textContent=this.textContent.replace(r,b);
} else {
p(a,b,this);
}
});
}
p('888-888-8888','(999)-999-9999');
p('(888)-888-8888','(999)-999-9999');
p('(888) 888-8888','(999)-999-9999');
});
它成功替换了列出的第一个表单的所有实例。但是似乎忽略了括号。我尝试用反斜杠转义,但没有运气。我的正则表达式技能不是很好,因此我非常感谢您的帮助。
最佳答案
因为要传递字符串以创建正则表达式,所以需要对括号进行转义:
p('888-888-8888','(999)-999-9999');
p('\\(888\\)-888-8888','(999)-999-9999');
p('\\(888\\) 888-8888','(999)-999-9999');
另一种方法是使用单个模式:
p('(888-|\\(888\\)[- ])888-8888','(999)-999-9999');