2013-07-27 16 views
2

This a similar question to this old one that never got answered: Wrap <a> tag around phone number using jqueryjQuery在頁面上查找電話號碼並換行<a href="tel: "> links

我正在使用自定義CMS的現有網站之外創建一個簡單的jQuery移動網站。在CMS有包含代碼和文本像

<div id="departments"> 
    <ul> 
    <li> Department 1 - (555) 123-1234</li> 
    <li> Department 2 - (555) 123-4321</li> 
    <li> Department 3 - (555) 123-6789</li> 
    </ul> 
</div> 

我知道,大多數手機瀏覽器將手機號碼將自動轉換爲與電話號碼啓動撥號器準備去點擊鏈接條目。然而,不是所有的事,我想能夠使用jQuery把以上爲:

<div id="departments"> 
     <ul> 
     <li> Department 1 - <a href="tel:5551231234">(555) 123-1234</a></li> 
     <li> Department 2 - <a href="tel:5551234321">(555) 123-4321</a></li> 
     <li> Department 3 - <a href="tel:5551236789">(555) 123-6789</a></li> 
     </ul> 
</div> 

我理解產生這種涉及使用正則表達式匹配一個電話號碼模式的步驟。

任何想法?我覺得這會成爲很多人寫的有用的插件。

UPDATE

這裏是我使用的答案和註釋如下嘗試:

var regex = ((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}; 

var text = $("body:first").html(); 

text = text.replace(regex, "<a href=\"tel:$1\">$1</a>"); 

$("body:first").html(text); 

小提琴:http://jsfiddle.net/PShYy/

我可以告訴大家,這個模式應該利用工作: http://gskinner.com/RegExr/?35o5p

我相信現在是如何正確地做用正則表達式查找和替換jQuery。我會繼續研究,但如果有人想參加,我會很感激。

+0

你已經試過了什麼? – DevlshOne

+0

儘管它的措辭很好,但是在這裏的人羣希望在花費時間幫助解決它之前看到某種嘗試。 – techfoobar

+0

類似的問題:http://stackoverflow.com/questions/15938564/javascript-validate- phone-number-using-regex – DevlshOne

回答

6

利用約翰的回答爲基礎我得到它一起工作更換電話號碼的所有實例:

var regex = /((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}/g; 

var text = $("body:first").html(); 

text = text.replace(regex, "<a href=\"tel:$&\">$&</a>"); 

$("body:first").html(text); 

演示:http://jsfiddle.net/PShYy/2/

+0

雖然這是一個老問題,只是想更新一件事。上面的正則表達式也將超鏈接年代如2'015-2016'到電話號碼中。 – TheGodWings

0

你可以用正則表達式

JS

var text = $("body:first").html(); 

    text = text.replace(/(phone\-number)/g, "<a href=\"tel:$1\">$1</a>"); 

    $("body:first").html(text); 

HTML

 <div id="departments"> 
      <ul> 
      <li> Department 1 - phone-number</li> 
      <li> Department 2 - phone-number</li> 
      <li> Department 3 - phone-number</li> 
      </ul> 
     </div> 
+1

這是一個有趣的方式來回答只有一半的問題。我很確定OP也希望看到RegEx。 – DevlshOne

+1

@DevlshOne您可以花幾分鐘時間編寫正則表達式,以匹配存在的每個可能的電話號碼,而不是嗤之以鼻。 – John

+0

電話號碼有一個非常具體的模式'(DDD)DDD - DDDD'。 RegEx不用於匹配EXACT字符串,它用於模式匹配。在這種情況下,它只有一種模式,所以「世界上每個可能的電話號碼」都沒有意義。我自己沒有回答這個問題的原因是因爲OP沒有嘗試自己解決這個問題,也沒有很好地在網站上搜索類似的問題。 – DevlshOne

相關問題