【问题标题】:Phonenumber identification add tag电话号码识别添加标签
【发布时间】:2014-06-17 08:13:11
【问题描述】:

我正在尝试制作一个识别挪威电话号码的脚本,基本上格式基于 8 位数字,但也应该允许 5 位数字以及 110,112,113(这是挪威的紧急号码)。脚本 beneeth 非常完美地做到了这一点,但也会影响匹配 exeption 的 url 和 id。我已经尝试了各种方法来使它只影响内部标签(不纠正标签本身)。

var regex = /((\d){5})|(110)|(113)|(112)|(\d{2}(?: ?\d){6})/g; //\>+.
text = $("article:first").html().replace(regex, "<a href=\"tel:\" class='phoneme'>$&</a>");
$("article:first").html(text);

有人知道怎么做吗?

更新:

我将详细说明我的问题:该函数的重点是用链接替换所有以文本形式给出的电话号码。我使用 HTML 的原因是将所有 html 保留在文章标签内——尽管我不希望标签内的属性受到影响。

以小提琴为例

http://jsfiddle.net/LFceL/

【问题讨论】:

  • 如果你只想替换文本,为什么要使用.html()
  • 您好,我会详细说明我的问题:
  • 用小提琴查看更新

标签: javascript jquery regex phone-number


【解决方案1】:

检查以下脚本。您可以更改 .mask

试试这个:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
 <script type="text/javascript" src="http://cdn.jsdelivr.net/jquery.maskedinput/1.3.1/jquery.maskedinput.js"></script>
    <script>
        jQuery(function($)
                { 
                $.mask.definitions['~']='[+-]';    
                $('#W2TxtCell').mask('(999)(99999)');       
                });


    </script>   

 <input type="" id="W2TxtCell"/>

http://jsfiddle.net/Mr7itsurdeveloper/2Xz8q/

【讨论】:

  • 糟糕的格式:) 为什么脚本标签内有一个 html 标签? + 它不允许 110,112,113
  • OP 要求一种在文本中识别(查找)电话号码的方法,以用直接呼叫(使用移动设备)的链接替换它们,有效电话号码有 3,5 或 8 个号码。我是这么理解的……
  • 我不确定我所要求的是否可以用这个 solotion,但如果你愿意解释一下,我会很高兴的。用小提琴查看更新
  • 不错的尝试!但我需要这个来解析整篇文章——这个例子只是问题的定义。 :) 还是谢谢
  • 好的,你不想在整个网站的文章链接上使用这个正则表达式..让我检查一下..
【解决方案2】:

我通过创建以下函数解决了这个问题。不是我想要的,但它就像发光一样工作:)

var runPhones = function(elm) {

    var regex = /((\d){5})|(110)|(113)|(112)|(\d{2}(?: ?\d){6})/g; 
    $("article:first *").contents().filter(function(i,e){ // Filter away all tags
        if(e.nodeType !== 1){
             e.nodeValue = e.nodeValue.replace(regex, "TEL$&TELEND")// Creating markup in text
        }
    });

    var text = $("article:first").html().replace(/TELEND/g,"</a>"); // Changeing markup to HTML
    text = text.replace(/TEL/g,"<a href='tel:' class='phoneme'>") // Changing markup to HTML

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

} 
runPhones();

我可能做了这个不必要的复杂操作,但我没有找到任何方法来直接解析 nodeValue.replace 中的 HTML。

用于演示的 SE fiddle

http://jsfiddle.net/LFceL/10/

【讨论】:

    猜你喜欢
    • 2021-11-05
    • 2011-02-17
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多