使用标签创建正则表达式?

时间:2012-10-18 14:35:32

标签: php javascript regex

页面上有三行(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);

        };

标签无法删除,我必须更换

3 个答案:

答案 0 :(得分:1)

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

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

删除所有类似标签的内容。

答案 1 :(得分: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);

检查此代码 here

答案 2 :(得分:0)

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

如果文字内容无效,那么Strip HTML from Text JavaScript会解释几种(hacky)方法从HTML字符串中删除标记。