2013-05-14 79 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); 
    }); 

- > [真,真实的,真实的,真实的,真实的,真实的,真实的,真实的,真]