Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单Javascript查找和替换_Javascript - Fatal编程技术网

简单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处理程序,或者机架之类的。实际上没有。不过谢谢你的建议。是的,我在发布我的问题之前已经查看了那个网站。说到正则表达式,我真的是个新手。你能举个例子吗?好吧,我在本地一直在玩这个,但它只会给我一个带有替换号码的警告框。我一直在搞乱它,试图让它跳过警报,只替换它找到的任何实例。上面的最新更新为您提供了答案,请这样标记,或解释为什么不。这完全符合预期。非常感谢你的帮助。事实上没有。不过谢谢你的建议。是的,我在发布问题之前已经查看了那个网站。说到正则表达式,我真的是个新手。你能举个例子吗?好吧,我在本地一直在玩这个,但它只会给我一个带有替换号码的警告框。我一直在搞乱它,试图让它跳过警报,只替换它找到的任何实例。上面的最新更新为您提供了答案,请这样标记,或解释为什么不。这完全符合预期。非常感谢你的帮助。