2010-11-01 82 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