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