以下是需要用正则分析的html代码<p>任何字符包括换行及<p>...1</p>
<p style="TEXT-ALIGN:center">任何字符包括换行及<p>...2</p>
<p>任何字符包括换行及<p>...3</p>以下是我想用的js方法,只是不好用function getNewsArray(innerhtml) {
    var rs;
    var reg = /<p(.*?)>(.*?)<\/p>/gim;
    while (rs = reg.exec(innerhtml)) {
        Pinnerhtml.push(rs[2]);
    };
    alert(Pinnerhtm.length);
};
我想要得到的结果是
Pinnerhtm[0]=任何字符包括换行及<p>...1
Pinnerhtm[1]=任何字符包括换行及<p>...2
Pinnerhtm[2]=任何字符包括换行及<p>...3
Pinnerhtm.length=3
想知道这样的正则如何写!!!

解决方案 »

  1.   

    我看你还是 直接用 js获取 p标签的  innerHTML 吧
      

  2.   

    那样就把<p></p>中的<p>也算上了
      

  3.   


    var rs="<p>任何字符包括换行及<p>...1</p><p style='TEXT-ALIGN:center'>任何字符包括换行及<p>...2</p><p>任何字符包括换行及<p>...3</p>";
        var reg = /(?:<p(.*?)>).*?(?:<\/p>)/g;
        var res = rs.match(reg);
        alert(res[0]);
        alert(res[1]);
        alert(res[2]);
      

  4.   

    另外如果是以下情况
    <p>111...<p>0000</p>...111</p>
    <p>111....222</p>
    <p>111...333</p>
    想要的结果是
    111...<p>0000</p>...111
    111....222
    111...333朋友的正则也不行
      

  5.   


    <script>
    var rs="<p>任何字符包括换行及<p>...1</p>\
            <p style='TEXT-ALIGN:center'>任何字符包括换行及<p>...2</p>\
            <p>任何字符包括换行及<p>...3</p>";    var reg = /[^>]+<p>[^<]+(?=<\/)/gim;
        var res = rs.match(reg);    alert(res[0]);
        alert(res[1]);
        alert(res[2]);
    </script>
      

  6.   


    <script>
    var rs="<p>任何字符包括换行及<p>...1</p>\
            <p style='TEXT-ALIGN:center'>任何字符包括换行及<p>...2</p>\
            <p>任何字符包括换行及<p>...3</p>\
            <p>111...<p>0000</p>...111</p>\
            <p>111....222</p>\
            <p>111...333</p>";
             
        var reg = /(?!\s)([^>]+<[^>]+>)?[^>]+(?=<\/)/gim;
        var res = rs.match(reg);    alert(res.join("\n"));</script>
      

  7.   


    您好朋友,你的方法能不能改成符合以下要求的
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"><head>
    <meta content="text/html; charset=gb2312" http-equiv="Content-Type" />
    <title>Untitled 1</title>
    </head><body>
    <div id="agent">
    <p>
    任何字符包括换行及<p>...1</p>.换行
    </p>
         <p style='TEXT-ALIGN:center'>
          任何字符包括换行及<p>...2</p>
         </p>
         <p>
          任何字符包括换行及<p>...3</p>
         </p>
    </div>
    <script type="text/javascript">
    var rs=document.getElementById('agent').innerHTML;
        var reg = /[^>]+<p>[^<]+(?=<\/)/gim;
        var res = rs.match(reg);    alert(res[0]);
        alert(res[1]);
        alert(res[2]);
    </script></body></html>以上是我的代码,执行的结果是
    res[0]=任何字符包括换行及<p>...1;
    res[1]=任何字符包括换行及<p>...2;
    res[2]=任何字符包括换行及<p>...3;我想得到的结果是
    res[0]=任何字符包括换行及<p>...1</p>.换行;
    res[1]=任何字符包括换行及<p>...2</p>;
    res[2]=任何字符包括换行及<p>...3</p>;请朋友帮忙!!!
      

  8.   


    <div id="agent">
        <p>
            任何字符包括换行及<p>...1</p>.换行
        </p>
         <p style='TEXT-ALIGN:center'>
             任何字符包括换行及<p>...2</p>
         </p>
         <p>
             任何字符包括换行及<p>...3</p>
         </p>
    </div><script type="text/javascript">var rs=document.getElementById('agent').innerHTML.replace(/\n|\r/g, "");
        var reg = /[^>]+<[^>]+>[^>]+(?:>[^<]*)/g;
        var res = rs.match(reg);    alert(res.join("\n"));</script>
      

  9.   

    修正:这在IE或者FIREFOX中运行结果是一样的。<script type="text/javascript">
    var rs = "\
        <p>任何字符包括换行及<p>...1</p>.换行</p>\
        <p style='TEXT-ALIGN:center'>任何字符包括换行及<p>...2</p></p>\
        <p>任何字符包括换行及<p>...3</p></p>";    var reg = /[^>]+<[^>]+>[^>]+(?:<\/[^\/]+>[^<]*)/g;
        var res = rs.match(reg);    alert(res.join("\n"));</script>
    BTW:LZ,采用innerHTML方法,在IE和FIREFOX中读取到的字符串是不一样的。在IE中读取的会在原始字中文后面添加一个标签“</p>”,无法使用上述正则。描写正则,我仅针对你给出的字符串本身,等有时间再考虑兼容浏览器的画蛇添足。