2013-05-14 76 views
1

我正在尋找一個正則表達式,用<a href>替換一些隨機電話號碼。電話號碼應該主要是瑞典語,但非瑞典語也應該支持。Linkyfing歐洲電話號碼

我想支持的格式如下:
(0 + 9號)

  • + 46xxxxxxxxx
  • 0046xxxxxxxxx
  • 0xxxxxxxxx

(0 + 8數字)

  • + 46xxxxxxxx
  • 0046xxxxxxxx
  • 0xxxxxxxx

(0 + 7個數字)

  • + 46xxxxxxx
  • 0046xxxxxxx
  • 0xxxxxxx

通常它們的格式也是根據this頁面的格式,但我沒有要求支持(儘管它會很棒)。

我至今嘗試,是嘗試了很多正則表達式。使用this answer我試圖讓我自己的版本,但我似乎無法得到它的工作。 我來最接近的是與此正則表達式,但它消除過多:

/(|^|>)((((\+|00)[0-9]{2} ?(\(0\))?)|0)([0-9]{2}-? ?[0-9]{7})|([0-9]{3}-? ?[0-9]{6})|([0-9]{1}-? ?[0-9]{8}))(|$|<)/gi 

這是我的小提琴:http://jsfiddle.net/xAXy4/1/

我的腳本的目的是確定的電話號碼,讓他們的<a href="tel:XXX">XXX</a>鏈接。 我目前的代碼是:

$(document).ready(function() { 

    var patt=/(|^|>)((((\+|00)[0-9]{2} ?(\(0\))?)|0)([0-9]{2}-? ?[0-9]{7})|([0-9]{3}-? ?[0-9]{6})|([0-9]{1}-? ?[0-9]{8}))(|$|<)/gi 

    $('*','body').each(function() { 
     $(this).html($(this).html().replace(patt,'<a href="tel:$2">$2</a>')); 
    }); 
}); 
+2

也許http://www.regexper.com/會派上用場...... – andlrc 2013-05-14 12:27:12

回答

1

下似乎捕捉到幾乎所有的測試頁的允許的格式。

enter image description here

pattern: /([^\d\+]|^|>)((((\+|00)(\d\d)\s*(\(0\))?)|0)(\s*\d){7,9})([^\d\+]|$|<)/gi 
replace: '$1<a href="tel:$2">$2</a>$9' 

Fork of your JSFiddle

+0

這完美地解決了我的問題。謝謝! – 2013-05-14 13:23:25

1

也許這會工作嗎?

Regexper.com

var regex = /((\+\d{2}|00\d{2}|0)\d{7,9})/g, 
    text = 'hello call me +46123456789'; 

text = text.replace(regex, function(all) { 
    return '<a href="tel:'+all+'">'+all+'</a>'; 
}); 

console.log(text); 

但與你的測試用例這只是亂七八糟的東西了:http://jsfiddle.net/xAXy4/2/

+0

謝謝正則表達式鏈接!此外,你的代碼很好地工作,但我用hsan的例子,因爲它覆蓋更多。感謝您的幫助! – 2013-05-14 13:24:13

0

/(?:\+46|0046|0)\d{7,9}/使用:

['+46123456789', '0046123456789', '', 
'+4612345678', '004612345678', '', 
'+461234567' ,'00461234567', ''].map (
    function (t) { 
    return /(?:\+46|0046|0)\d{7,9}/.test (t); 
    }); 

- > [真,真實的,真實的,真實的,真實的,真實的,真實的,真實的,真]