代码之家  ›  专栏  ›  技术社区  ›  faressoft

如何使用javascript将<p><span>你好</span></p>拆分为<span>你好</span>

  •  3
  • faressoft  · 技术社区  · 14 年前

    如何拆分 <p><span>Hello</span></p> <span>Hello</span>

    var text = "<p><span>Hello</span></p>";
    

    记住:我不知道我不知道你装了什么 <p> ,我不知道 <p> 是否有属性

    我找到答案了!

    var patt=/^<p.*?>(.*)<\/p>$/i;
    var result=patt.exec(text);
    alert(result[1]); 
    

    感谢您的ring0&W3学校 http://www.w3schools.com/jsref/jsref_obj_regexp.asp

    但是有问题!它不适用于

    aa<p><span>Hello</span></p>aa
    
    4 回复  |  直到 14 年前
        1
  •  1
  •   Déjà vu    14 年前

    一个处理删除的正则表达式 p 属性

    var new = text.replace(/^<p[^>]*>(.*)<\/p>$/i, "$1");
    

    或者一个版本 .*?

    var new = text.replace(/^<p.*?>(.*)<\/p>$/i, "$1");
    


    如果 <pre> <param> text ,必须阻止匹配

    var new = text.replace(/^<p\b.*?>(.*)<\/p>$/i, "$1");
    


    编辑 回答你的第二个问题

    除去之前/之后的东西

    var new = text.replace(/^.*<p\b[^>]*>(.*)<\/p>.*$/i, "$1");
    

    <p...> 以及所有 </p>

    var new = text.replace(/<p\b.*?>/ig, "");
    new = text.replace(/<\/p>/ig, "");
    
        2
  •  12
  •   Josh K    14 年前

    不要对此进行字符串操作,请使用DOM。

    // create a dummy container div element
    var tempDiv = document.createElement('div');
    // insert the desired html inside this container
    tempDiv.innerHTML = "<p><span>Hello</span></p>";
    // find the first para, and get its html
    tempDiv.getElementsByTagName("p")[0].innerHTML; // contains "<span>Hello</span>"
    

    Try this snippet .

    $("<p><span>Hello</span></p>").html()
    

    Try this snippet .

        3
  •  0
  •   Paul Schreiber Jon Lin    14 年前

    你到底想要什么?

    • text.substr(3, 18)
    • 可以使用正则表达式: text.match(/<span>([^<]+)<\/span>/)
    • 你可以坚持这是DOM并解析它。

    你需要更好地解释这个问题。

        4
  •  -1
  •   Josh K    14 年前

    我用的笔记 p> </p 而不是完整的标签。如果使用full标记,我不确定split是否会给您一个第一个索引为空的数组。我太懒了,没法测试它,因为问题的措辞很糟糕。

    var text = "<p><span>Hello</span></p>";
    var foo = text.split("p>");
    var bar = foo[1].split("</p");
    alert(bar[0]);