基本上,輸入字段只是一個字符串。人們以各種格式輸入他們的電話號碼。我需要一個正則表達式來查找並將這些數字轉換爲鏈接。我需要一個正則表達式來將美國電話號碼轉換爲鏈接
輸入例子:
(201) 555-1212
(201)555-1212
201-555-1212
555-1212
這是我想要的東西:
<a href="tel:(201)555-1212">(201) 555-1212</a> - Notice the space is gone
<a href="tel:(201)555-1212">(201)555-1212</a>
<a href="tel:201-555-1212">201-555-1212</a>
<a href="tel:555-1212">555-1212</a>
我知道這應該不僅僅是去掉空格較爲強勁,但它是一個內部網站,我的員工從他們的iPhone訪問。所以,我願意「讓它工作」。
這裏是我迄今爲止在C#(這應該告訴你我是多麼少了解正則表達式):
strchk = Regex.Replace(strchk, @"\b([\d{3}\-\d{4}|\d{3}\-\d{3}\-\d{4}|\(\d{3}\)\d{3}\-\d{4}])\b", "<a href='tel:$&'>$&</a>", RegexOptions.IgnoreCase);
誰能幫我解決這個或暗示更好的方式來做到這一點?
編輯:
謝謝大家。下面是我到目前爲止有:
strchk = Regex.Replace(strchk, @"\b(\d{3}[-\.\s]\d{3}[-\.\s]\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]\d{4}|\d{3}[-\.\s]\d{4})\b", "<a href='tel:$1'>$1</a>", RegexOptions.IgnoreCase);
它拿起剛纔的一切除了那些(NNN)區域代碼,有或沒有它和7位數字之間的空格。它會提取7位數字並將其連接起來。但是,如果指定了區號,則不會匹配。任何想法我做錯了什麼?
第二個編輯:
明白了現在的工作。我所做的只是從字符串的開頭刪除\b
。
您期待什麼樣的輸入?你不能把所有的空白區域去掉嗎? – NullUserException 2010-07-21 18:34:12
電話號碼有時位於大塊文字中。 – BoltBait 2010-07-21 18:36:14