2

ランダムな電話番号を に置き換える正規表現を探してい<a href>ます。電話番号は主にスウェーデン語にする必要がありますが、スウェーデン語以外もサポートする必要があります。

次の形式をサポートしたいと思います:
(0 + 9 個の数字)

  • +46xxxxxxxxx
  • 0046xxxxxxxxx
  • 0xxxxxxxxx

(0 + 8 桁)

  • +46xxxxxxxx
  • 0046xxxxxxxx
  • 0xxxxxxxx

(0 + 7 桁)

  • +46xxxxxxx
  • 0046xxxxxxx
  • 0xxxxxxx

通常、これらはこのページのフォーマットに従ってフォーマットされていますが、それをサポートする必要はありません (それは素晴らしいことですが)。

私がこれまでに試したことは、多くの正規表現を試したことです。この回答を使用して、独自のバージョンを作成しようとしましたが、機能しないようです。私が最も近いのはこの正規表現ですが、削除しすぎています:

/( |^|>)((((\+|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>'));
    });
});
4

3 に答える 3

3

以下は、テスト ページで許可されているほとんどすべての形式をキャプチャしているようです。

ここに画像の説明を入力

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

JSFiddle のフォーク

于 2013-05-14T12:48:31.363 に答える
0

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

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

--> [真、真、真、真、真、真、真、真、真]

于 2013-05-14T12:53:23.240 に答える