我正在开发一个项目,需要将网站上的任何电话号码替换为如下格式的号码:
<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/