繁体   English   中英

如何仅更改div内容中尚未链接的电话号码?

[英]How alter only the phone numbers in a div's content that aren't already links?

我需要在div及其所有子级的textContent中找到所有电话号码,如果尚未将它们建立为链接(例如,通过iOS Safari或创建页面内容的人),则将它们设为链接。 我不确定如何查找电话号码以及是否已经是链接。

我使用的代码仅允许在innerHTML查找电话号码并包装在链接标记中:

div.innerHTML = div.innerHTML.replace( 
    /(\(\d{3}\)(-|\.)?\d{3}(-|\.)?\d{4}|\d{3}(-|\.)?\d{3}(-|\.)?\d{4}|[0-9]{10,10})/g,
    "<a href=\"tel:$1\">$1</a>"
);

但是我如何确定它是否包装在链接标记中,如果是,则跳过它?

这个怎么样。

((\(\d{3}\)(-|\.)?\d{3}(-|\.)?\d{4}|\d{3}(-|\.)?\d{3}(-|\.)?\d{4}|[0-9]{10,10}))(?!["<])

这样做可以确保末尾的字符不是引号(例如href电话号码),也不是小于号(例如anchor标签的结尾)。

我解决它通过在年底收盘添加检查a标签或引用(所以它不会改变的HREF):

(?![\s]*(\<\/a>|"|'))

整个正则表达式:

/(\(\d{3}\)(-|\.)?\d{3}(-|\.)?\d{4}|\d{3}(-|\.)?\d{3}(-|\.)?\d{4}|[0-9]{10,10})(?![\s]*(\<\/a>|"|'))/g

它还允许在电话号码和结束标签之间留有空格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM