0

(000) 000-0-000 和 +00 (000) 000-00-00 页上有三行,所以我写了一个正则表达式来搜索它们/([\+]?[0-9]+\s)?[\(][0-9]+[\)]?[\s][0-9-]+/,但是第三个字符串包含在标签中<strong>(0000)</strong><span>00-00-00</span>如何修改表达式碰到第三排?

function PhoneReplace(){
            var src = $('body').html().replace(/([\+]?[0-9]+\s)?[\(][0-9]+[\)]?[\s][0-9-]+/g, '098 907 23 42');
            $('body').html(src);

        };

标签不能删除,我必须更换

4

3 回答 3

1

不要在现有的正则表达式中捕捉到这种情况。相反,在应用电话号码表达式之前修改字符串,即删除标签。有很多方法可以做到这一点,例如使用 DOM 解析器,正则表达式可能不是最好的工具。你可以做

var results = input.replace(/<[^>]+>/g,"").match(myPhoneNumberExpression);

删除所有类似标签的东西。

于 2012-10-18T14:40:52.867 回答
1
var s = '<strong>(0000)</strong><span>00-00-00</span>';
var n = '', result;
var regex = /(\+?\d+)/g;
while ((result = regex.exec(s))) { 
  n += result[1];
} 
document.writeln(n);

在此处检查此代码。

于 2012-10-18T15:33:00.570 回答
0

您可以使用document.body.innerTextdocument.body.textContent获取 HTML 的文本内容(不带标签),然后可以应用您的 phone# 正则表达式。

如果文本内容没有帮助,那么从文本 JavaScript 中剥离 HTML解释了从 HTML 字符串中删除标签的几种(hacky)方法。

于 2012-10-18T14:43:25.777 回答