电话号码识别添加标签

时间:2014-06-17 08:13:12

标签: javascript jquery regex phone-number

我试图制作一个识别挪威语音的脚本,基本上格式是基于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/

2 个答案:

答案 0 :(得分:0)

检查以下脚本。您可以更改.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/

答案 1 :(得分:0)

我通过创建以下功能解决了这个问题。不是我想要的,但它的效果就像一个发光:)

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小提琴演示

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