因此,我正在研究一个可以更改网站上特定电话号码的正则表达式。
我正在慢慢到达那里,但无法弄清楚如何捕捉以下数字:(085)-4017877
(085)4017877。

regexr.com之类的工具也告诉我regex在这里捕获了两个数字:
085-4017877
但是在我当前的设置中,它无法捕获第一个数字。关于为什么会这样的任何想法?

当前正则表达式:
\ 85 [-。\ s]?4017877 \ g

数字前面的零被有意忽略。

它应该抓住什么:

085-4017877
085-4017877
(085)-4017877
(085)4017877
085 4017877
+31854017877

测试:
http://regexr.com/39v0b

       //step through dom
    function recurseDOM(scope, newText, patt)
{
    var i = 0, nodes, node;
    if(scope.childNodes)
    {
        nodes = scope.childNodes;
        for(i;i<nodes.length;i++)
        {
            node = nodes[i];
            if(node.nodeType === 3)
            {
                //is a text node
                checkTextNode(node, newText, patt);
            }
            if(node.childNodes)
            {
                //loop through child nodes if child nodes are found
                recurseDOM(node, newText, patt);
            }
            node = null;
        }
        nodes = null;
    }
}

//Find and replace
function checkTextNode(node, newText, patt)
{
    var text = node.data;
    var test = patt.test(text);

    if(test)
    {
        //match found, replace node's textual data with specified string
        node.data = text.replace(patt, newText);
        newText = null;
        text = null;
    }
    test = null;
}


当前用于替换号码的代码Im

最佳答案

您非常接近,这应该可以解决您的所有情况:

/85\)?[- ]?4017877/g


它只是在破折号/空格字符类之前添加了一个可选的括号。

关于javascript - 用于替换特定电话号码的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27096169/

10-10 23:09