我正在开展一个项目,我需要用以下格式替换网站上的任何电话号码:
<span id="special-id">555-666-7777</span>
使用正则表达式并不是必需的,因为我知道需要替换的值。此外,某些数字的格式可能不同(带括号或小数)。
我很确定我可以弄清楚如何使用Jquery做到这一点但是,对于这个项目,我需要使用常规的Javascript。
简而言之,我想定义一个或多个版本的数字( 555-666-7777 ,(555)666-7777 ,等)并用带有ID的SPAN标记中的带连字符的数字替换它们。
答案 0 :(得分:1)
您是否在目录结构中更新了一堆文件(例如.html)?如果是这样,grep将成为你的朋友,特别是如果你能识别所有的电话号码排列。然后使用带有grep的正则表达式来查找和替换所有这些。这是一个部分解决方案:
grep -l -R --perl-regexp“\ b((\ d {3})\ s * | \ d {3} - )\ d {3} - \ d {4} \ b”* &GT; output.txt
被盗:http://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions
JavaScript更新
使用Regular Expression Backreferences in JavaScript。基本上你定义了一个在其中有“子匹配”的正则表达式,其中替换值引用那些。在您的情况下,子匹配数字,然后替换为对这些数字加上您的分隔符的后引用,并用<span/>
标记环绕。
示例强>
注意正则表达式末尾的“g”标志,使其成为全局。
<html>
<head>
<script type="text/javascript">
function cleanPhoneNumbers() {
document.body.innerHTML =
document.body.innerHTML.replace(
/\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})/g,
"<span>$1-$2-$3</span>"
);
}
</script>
</head>
<body onload="cleanPhoneNumbers();">
<div>There's a bunch of text here and some other <b>tags</b> and
stuff <i>to mix it up.</i></div>
<p>Perhaps <i>dial</i> (555) 666-7777</p>
</body>
</html>