页面上有三行(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);
};
标签无法删除,我必须更换
答案 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.innerText
或document.body.textContent
获取HTML的文字内容(不带标签),然后您可以应用手机#正则表达式。
如果文字内容无效,那么Strip HTML from Text JavaScript会解释几种(hacky)方法从HTML字符串中删除标记。