javascript - 简单的 Javascript 查找和替换

标签 javascript

我正在开发一个项目,需要将网站上的任何电话号码替换为如下格式的号码:

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

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

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

简而言之,我想定义该号码的 1 个或多个版本(555-666-7777(555) 666-7777>etc ),并将它们替换为我在 SPAN 标记中连字符连接的号码版本,并带有 ID。

最佳答案

您是否正在更新目录结构中的一堆文件(例如 .html)?如果是这样,grep 将是您的 friend ,特别是如果您可以识别所有电话号码排列。然后使用正则表达式和 grep 来查找和替换所有这些。这是一个部分解决方案:

grep -l -R --perl-regexp "\b((\d{3})\s*|\d{3}-)\d{3}-\d{4}\b"* > 输出.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>

关于javascript - 简单的 Javascript 查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072565/

相关文章:

javascript - 转换数据的逻辑

javascript - 将 jQuery 元素存储在变量中更有效吗?

javascript - 忽略按钮上的验证

javascript - Hover()、mouseenter()、mouseover() 等来回跳跃

javascript - 如何使用 lodash 将两个数组合并为一个对象

javascript - 鉴于主干js,单击按钮不起作用

php - 是否可以检查请求是否来自 PHP 中的 &lt;script&gt; 标记?

javascript - jQuery。为表中的每一行发送 ajax 查询

javascript - 如何在映射函数中累积值并将其存储在 useState 中

javascript - 使用 AngularJs 制作月度出勤报告