4

这是一个与从未得到回答的旧问题类似的问题:Wrap <a> tag around phone number using jquery

我正在使用自定义 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>

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

我了解生成此内容的步骤涉及使用 RegEx 匹配电话号码模式。

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

更新

这是我尝试使用以下答案和评论的方法:

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);

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

我可以告诉该模式应该通过使用:http ://gskinner.com/RegExr/?35o5p

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

4

2 回答 2

7

以约翰的回答为基础,我可以使用它:

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);

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

于 2013-07-27T22:56:19.257 回答
0

您可以用正则表达式替换您的电话号码的所有实例

js

    var text = $("body:first").html();

    text = text.replace(/(phone\-number)/g, "<a href=\"tel:$1\">$1</a>");

    $("body:first").html(text);

html

        <div id="departments">
           <ul>
             <li> Department 1 - phone-number</li>
             <li> Department 2 - phone-number</li>
             <li> Department 3 - phone-number</li>
           </ul>
        </div>
于 2013-07-27T19:08:01.117 回答