jQuery在页面上找到电话号码并用<a href="tel: ">链接包装

Eri*_*ger 4 jquery touch phone-number jquery-mobile

这是一个与以前从未得到回答的旧问题类似的问题:使用jquery在电话号码周围标记<a>标签

我正在使用自定义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>
Run Code Online (Sandbox Code Playgroud)

我知道大多数手机浏览器会自动将电话号码转换为可点击的链接,这些链接会启动拨号程序并准备好电话号码.然而,并非所有人都这样做,我希望能够使用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>
Run Code Online (Sandbox Code Playgroud)

我理解产生这一步骤的步骤涉及使用RegEx来匹配电话号码模式.

有任何想法吗?我觉得这对于很多人来说都是一个有用的插件.

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);
Run Code Online (Sandbox Code Playgroud)

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

我可以通过使用:http://gskinner.com/RegExr/?35o5p来判断该模式是否有用

我相信现在是如何正确地使用正则表达式在jQuery中进行查找和替换的问题.我会继续研究,但如果有人想要插话.我会很感激.

Eri*_*ger 7

使用John的答案作为基础我得到了它:

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);
Run Code Online (Sandbox Code Playgroud)

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