简单Javascript查找和替换
我正在从事一个项目,我需要用如下格式的号码替换网站上的任何电话号码:简单Javascript查找和替换,javascript,Javascript,我正在从事一个项目,我需要用如下格式的号码替换网站上的任何电话号码: <span id="special-id">555-666-7777</span> 555-666-7777 使用regex并不是真正必要的,因为我知道需要替换的值。此外,一些数字的格式可能不同(使用括号或小数) 我很确定我可以用Jquery解决这个问题,但对于这个项目,我需要使用常规Javascript 简而言之,我想定义一个或多个版本的数字(555-666-7777,(555)666-7777,
<span id="special-id">555-666-7777</span>
555-666-7777
使用regex并不是真正必要的,因为我知道需要替换的值。此外,一些数字的格式可能不同(使用括号或小数)
我很确定我可以用Jquery解决这个问题,但对于这个项目,我需要使用常规Javascript
简而言之,我想定义一个或多个版本的数字(555-666-7777,(555)666-7777,等),并将其替换为SPAN标记中带有ID的数字的连字符版本。您是否正在更新目录结构中的一堆文件(例如,.html)?如果是这样,grep将是你在这里的朋友,特别是如果你能识别所有的电话号码排列。然后使用带有grep的正则表达式查找并替换所有正则表达式。以下是部分解决方案: grep-l-R--perl regexp“\b((\d{3})\s*\d{3}-\d{3}-\d{4}\b”*>output.txt 被盗自: JavaScript更新 使用。基本上,您定义了一个内部有“子匹配项”的正则表达式,其中替换值引用了这些子匹配项。在您的情况下,子匹配数字,然后替换为对这些数字加上分隔符的反向引用,并用
标记环绕
示例
注意正则表达式末尾的“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>
函数cleanPhoneNumbers(){
document.body.innerHTML=
document.body.innerHTML.replace(
/\(?([0-9]{3})\)?[-.]([0-9]{3})[-.]?([0-9]{4})/g,
"$1-$2-$3"
);
}
这里有一堆文本和一些其他标签
把东西混在一起。
也许可以拨(555)666-7777
您是否正在更新目录结构中的一堆文件(如.html)?如果是这样,grep将是你在这里的朋友,特别是如果你能识别所有的电话号码排列。然后使用带有grep的正则表达式查找并替换所有正则表达式。以下是部分解决方案:
grep-l-R--perl regexp“\b((\d{3})\s*\d{3}-\d{3}-\d{4}\b”*>output.txt
被盗自:
JavaScript更新
使用。基本上,您定义了一个内部有“子匹配项”的正则表达式,其中替换值引用了这些子匹配项。在您的情况下,子匹配数字,然后替换为对这些数字加上分隔符的反向引用,并用
标记环绕
示例
注意正则表达式末尾的“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>
函数cleanPhoneNumbers(){
document.body.innerHTML=
document.body.innerHTML.replace(
/\(?([0-9]{3})\)?[-.]([0-9]{3})[-.]?([0-9]{4})/g,
"$1-$2-$3"
);
}
这里有一堆文本和一些其他标签
把东西混在一起。
也许可以拨(555)666-7777
即等。
在这里非常重要,您需要列出不同的变体。一个regex
或其他模式匹配是必要的,因为你有多个版本要替换,@Nick Craver-基本上这是格式化电话号码的任何常用方法--555-666-7777,(555)666-7777,555.666.7777,(555)666-7777是的regex似乎是最好的选择。如果您非常大胆,那么根据您使用的web平台,您可以在输出被从服务器推出之前处理输出。在服务器端和客户端,读取将要输出的内容,并在服务器端切换数字。使用一些HTTP处理程序、机架或其他东西。这等在这里非常重要,您需要列出不同的变体。一个regex
或其他模式匹配是必要的,因为你有多个版本要替换,@Nick Craver-基本上这是格式化电话号码的任何常用方法--555-666-7777,(555)666-7777,555.666.7777,(555)666-7777是的regex似乎是最好的选择。如果您非常大胆,那么根据您使用的web平台,您可以在输出被从服务器推出之前处理输出。在服务器端和客户端,读取将要输出的内容,并在服务器端切换数字。使用一些HTTP处理程序,或者机架之类的。实际上没有。不过谢谢你的建议。是的,我在发布我的问题之前已经查看了那个网站。说到正则表达式,我真的是个新手。你能举个例子吗?好吧,我在本地一直在玩这个,但它只会给我一个带有替换号码的警告框。我一直在搞乱它,试图让它跳过警报,只替换它找到的任何实例。上面的最新更新为您提供了答案,请这样标记,或解释为什么不。这完全符合预期。非常感谢你的帮助。事实上没有。不过谢谢你的建议。是的,我在发布问题之前已经查看了那个网站。说到正则表达式,我真的是个新手。你能举个例子吗?好吧,我在本地一直在玩这个,但它只会给我一个带有替换号码的警告框。我一直在搞乱它,试图让它跳过警报,只替换它找到的任何实例。上面的最新更新为您提供了答案,请这样标记,或解释为什么不。这完全符合预期。非常感谢你的帮助。