简单的Javascript查找和替换

时间:2010-11-01 19:55:21

标签: javascript

我正在开展一个项目,我需要用以下格式替换网站上的任何电话号码:

<span id="special-id">555-666-7777</span>

使用正则表达式并不是必需的,因为我知道需要替换的值。此外,某些数字的格式可能不同(带括号或小数)。

我很确定我可以弄清楚如何使用Jquery做到这一点但是,对于这个项目,我需要使用常规的Javascript。

简而言之,我想定义一个或多个版本的数字( 555-666-7777 (555)666-7777 )并用带有ID的SPAN标记中的带连字符的数字替换它们。

1 个答案:

答案 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>