2010-11-01 80 views
1

我上一个项目,我需要格式化这样一个数字来代替在网站上的任何电话号码工作:简单的JavaScript查找和替换

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

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

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

概括地说,我想确定1个或多个版本号(555-666-7777(555)666-7777),并让他们与我的连字符替换该号码的版本,在一个SPAN标签中,带有一个ID。

+3

这里''等'*非常*重要,您需要列出不同的变化。 'regex'或其他模式匹配*是必需的,因为您有多个版本可以替换。 – 2010-11-01 19:56:54

+0

@Nick Craver - 本质上它将是格式化电话号码的任何常用方法--- 555-666-7777,(555)666-7777,555.666.7777,(555)666-7777 – Batfan 2010-11-01 19:59:32

+1

是的正则表达式似乎是最好的选择。如果您是超级大胆的,取决于您使用的Web平台,您可以在将输出从服务器推出之前处理输出。在服务器端与客户端读取即将输出的内容并切换数字服务器端。使用一些HTTP处理程序或机架或其他东西。 – 2010-11-01 20:01:35

回答

1

是否正在更新目录结构中的一堆文件(例如.html)?如果是这样,grep将成为你的朋友,特别是如果你能识别所有的电话号码排列。然后用grep找一个正则表达式来替换它们。这里有一个部分的解决方案:

grep -l -R --perl-regexp“\ b((\ d {3})\ s * | \ d {3} - )\ d {3} - \ d {4} \ b” *> 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> 
+0

其实没有。 (还是)感谢你的建议。 – Batfan 2010-11-01 20:36:32

+0

是的,在发布我的问题之前,我已经检查过该网站。当谈到正则表达式时,我真的是一个新手。任何你可以发布的例子? – Batfan 2010-11-01 21:12:05

+0

好的,我一直在本地玩,但是,它只给了我一个警戒框,更换的号码。我一直在搞它,并试图让它跳过警报,只是取代它找到的任何实例。 – Batfan 2010-11-01 22:24:10