【问题标题】:Create a regular expression with the tags?使用标签创建正则表达式?
【发布时间】:2012-10-18 14:35:31
【问题描述】:

(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);

        };

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

【问题讨论】:

  • 不要用正则表达式来捕捉它。相反,在应用电话号码表达式之前修改字符串,即删除标签。
  • 我需要替换数字,留下格式标签
  • 不要尝试通过设置innerHTML 重新渲染整个文档。最好标出电话号码并仅替换 DOM 中的电话号码。顺便说一句,为什么这个问题被标记为 PHP?

标签: php javascript regex


【解决方案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】:

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

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

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

    【讨论】:

    • 标签不能删除,我必须更换
    • 谁谈到了“删除标签”?或者你的意思是你想用空格替换块元素标签?
    • 将标签内容按数字顺序替换
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      相关资源
      最近更新 更多