乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JavaScript,HTML 如何用正則表達(dá)式去除字符串中的HTML標(biāo)記??[以前的帖子...

       xnet 2007-01-11

      JavaScript,HTML 如何用正則表達(dá)式去除字符串中的HTML標(biāo)記??[以前的帖子都沒有完全解決]

      問題 于 2006-09-14 18:43
      從網(wǎng)上找到了如下版本:
      1."<[^>]+>|</[^>]+>"
      2."<\/*[^<>]*>"
      3."<(.*)>.*<\/\1>|<(.*) \/>"

      都無法正確地從以下字符串中得到文字內(nèi)容:
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)">texttexttext</a>

      應(yīng)該再加上點(diǎn)條件限制就行了,可是我就是搞不定,所以還請高人指點(diǎn)啊!

       
      響應(yīng)者 1:
      問題出在
      第一個(gè),少了轉(zhuǎn)意字符\
      第二個(gè),貪婪模式所以不行
      第三個(gè),中間有回車換行符,.是不能匹配的
      響應(yīng)者 2:
      還有些問題,問題很有意思
      響應(yīng)者 3:
      <script language=JAVAscript>
      var str=‘<a href="..." onclick="if(this.href.length>30)alert(\‘too big\‘)">texttexttext</a>‘
      obj=document.createElement("div")
      obj.innerhtml=str
      alert(obj.getElementsByTagName("a")[0].innerhtml)
      obj.removeNode(true)
      </script>
      響應(yīng)者 4:
      找了一個(gè)老外寫的,也不行 :(

      "<[^>]*(>|$)/"
      響應(yīng)者 5:
      To 樓上的三星:
      你的愿望是美好的,做起來是不可能滴。我是要在別處使用此表達(dá)式,不是在瀏覽器里 :(

      還是表示感謝 ,呵呵
      響應(yīng)者 6:
      /<\/?[^<>]+>/g
      響應(yīng)者 7:
      To meizz :
      感謝回復(fù)!
      但,還是不行......
      響應(yīng)者 8:
      因?yàn)槔锩嬗写笥谔?,如果是純正則,那還要想想
      響應(yīng)者 9:
      代碼我是測試過的。

      <textarea id="txt" style="width: 100%; height: 200px">
      aa<b> > </b> < bb
      <br/><u>xi
      </u>
      </textarea>
      <input type="button" value="ok" onclick="var e=document.getElementById(‘txt‘); e.value=e.value.replace(/<\/?[^<>]+>/g, ‘‘)">
      響應(yīng)者 10:
      這個(gè)問題還要具體情況具體分析下,比如具體的情況中,中間的內(nèi)容中肯定沒有>字符等等條件,
      如果是上面的條件可以用下面的代碼。
      單憑現(xiàn)在的條件用一個(gè)正則很難實(shí)現(xiàn),用多個(gè)到是可以的,首先先把奇數(shù)的"和‘全替換成別的特殊字符,然后替換特殊字符+ .*? + > + .*? + ["‘],然后用上面的正則替換掉<>之間的內(nèi)容就可以了,類似一個(gè)小型的語法分析器
      <script language=JAVAscript>
      var str=‘<a href="..." onclick="if(this.href.length>30)alert(\‘too big\‘)">texttexttext</a>‘
      re=/\/?<.+?(>(?=((([^>]*?)<)|$)))/g
      alert(str.replace(re,‘‘))
      </script>
      響應(yīng)者 11:
      我想應(yīng)該是這樣的匹配規(guī)則:

      左尖括號+若干多字符+下一個(gè)左尖括號之前的最后一個(gè)右括號

      在此之間的全部認(rèn)為是Match的。
      響應(yīng)者 12:
      /(?:<html.*?>)((\n|\r|.)*?)(?:<\/html>)/

      響應(yīng)者 13:
      沒看清楚題目:sorry

      <textarea id="txt" style="width: 100%; height: 200px">
      aa<b disabled style="color: red" > > </b> < bb
      <br/><u>xixxxxxxxxxxxxxxxxxx
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)">texttexttext</a>
      </u>
      </textarea>
      <input type="button" value="ok" onclick="mm()" />
      <SCRIPT LANGUAGE="JAVAScript">
      <!--
      function mm()
      {
      var e=document.getElementById(‘txt‘);
      e.value=e.value.replace(/<\/?[!\w\-:]+(\s+\w+\s*(=\s*(\‘[^\‘]*\‘|\"[^\"]*\"))*)*\/?\s*>/g, ‘‘);
      }
      //-->
      </SCRIPT>
      響應(yīng)者 14:
      上面我的還有些問題 改成re=/<.+?(>(?=((([^>]*?)<)|(\s*$))))/g
      可惜這個(gè)匹配不了文本中包含>這個(gè)的情況

      \/?應(yīng)該可以去掉吧
      響應(yīng)者 15:
      梅鉆的思路應(yīng)該是=后面的“”或‘’吧,但是如果有下面這種就匹配不了了
      <textarea id="txt" style="width: 100%; height: 200px">
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)" name=asd>texttexttext</a>
      </textarea>
      <input type="button" value="ok" onclick="mm()" />
      <SCRIPT LANGUAGE="JAVAScript">
      <!--
      function mm()
      {
      var e=document.getElementById(‘txt‘);
      e.value=e.value.replace(/<\/?[!\w\-:]+(\s+\w+\s*(=\s*(\‘[^\‘]*\‘|\"[^\"]*\"))*)*\/?\s*>/g, ‘‘);
      }
      //-->
      </SCRIPT>
      響應(yīng)者 16:
      我終于知道紅鉆是怎么煉成的了 :)

      太謝謝meizz(梅花雪)了?。?!

      meizz寫的表達(dá)式至少能夠處理90%的情況!

      對于這個(gè)問題我已經(jīng)比較滿意了,就算是已經(jīng)解決了,

      再放兩天,給大伙看看后就結(jié)帖,哈哈
      響應(yīng)者 17:
      To 天外水火(我要多努力)) :
      我說的沒能處理的那10%就是你所說的情況,name后面沒有引號,就會出問題。
      響應(yīng)者 18:
      做老本行,研究了下梅老大的代碼,我改了點(diǎn),:)
      <textarea id="txt" style="width: 100%; height: 200px">
      aa<b disabled style="color: red" > > </b> < bb
      <br/><u>xixxxxxxxxxxxxxxxxxx
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)">texttexttext</a>
      </u>
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)" name=asd>texttexttext</a>
      </textarea>
      <input type="button" value="ok" onclick="mm()" />
      <SCRIPT LANGUAGE="JAVAScript">
      <!--
      function mm()
      {
      var e=document.getElementById(‘txt‘);
      e.value=e.value.replace(/<\/?[!\w\-:]+(\s+\w+\s*(=\s*(\‘[^\‘]*\‘|\"[^\"]*\"))*)*[^‘"]*?>/g, ‘‘);
      }
      //-->
      </SCRIPT>
      響應(yīng)者 19:
      在上述情況下,等號后面的值中,如果有“>”的話,則這個(gè)右尖括號單純從字符角度看,和html標(biāo)記的右尖括號似乎已經(jīng)沒有區(qū)別了。

      PS:寫程序的是應(yīng)該追求完美,但總是這樣麻煩別人,我還是有點(diǎn)過意不去的:) 不過meizz能再完善一下那就最好拉,哈哈,再次感謝 !
      響應(yīng)者 20:
      哈哈,更加感謝天外水火!

      現(xiàn)在的代碼很完美啊,暫時(shí)沒有發(fā)現(xiàn)問題 :)
      響應(yīng)者 21:
      AO,一個(gè)小問題:
      <a href="..." onclick=if(this.href.length>30)alert(‘too big‘) name=asd>texttexttext</a>
      不能正確匹配....這就是我說的“在上述情況下,等號后面的值中,如果有‘>’的話....”
      響應(yīng)者 22:
      恐怕這種情況html解析也應(yīng)該從中間的>結(jié)束吧,后面的>應(yīng)該算在頁面內(nèi)容中
      響應(yīng)者 23:
      暈倒,沒人理我

      正則:/(?:<html.*?>)((\n|\r|.)*?)(?:<\/html>)/

      代碼:
      <script>
      var str="ab123<html><def456>c7ghi<htmljkl890</html>mno12p>qrs345<tu>vw</html3>x4y5z6789";
      var reg=/(?:<html.*?>)((\n|\r|.)*?)(?:<\/html>)/g;
      var result=str.replace(reg,"$1");
      alert("原式為:"+str+"\n 替換后:"+result);
      </script>
      響應(yīng)者 24:
      AO,一個(gè)小問題之二:

      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)" name=as<d>texttexttext</a>
      這句正確匹配。(變化體現(xiàn)在name中,現(xiàn)在name的值是“as<d”)

      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)" name=as>d>texttexttext</a>
      這句就錯(cuò)了 :( (現(xiàn)在name的值是“as>d”)


      嘿嘿,俺是不是心黑了點(diǎn)?
      響應(yīng)者 25:
      對于有轉(zhuǎn)義的 \" \" 還是不行:

      <textarea id="txt" style="width: 100%; height: 200px">
      aa<b disabled style="color: red" > > </b> < bb
      <br/><u>xixxxxxxxxxxxxxxxxxx
      <a
      href="..." onclick="if(this.href.length>30)alert(‘too big‘)">texttexttext</a>
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)" name=asd>texttexttext</a>
      </u>
      </textarea>
      <input type="button" value="ok" onclick="mm()" />
      <SCRIPT LANGUAGE="JAVAScript">
      <!--
      function mm()
      {
      var e=document.getElementById(‘txt‘);
      e.value=e.value.replace(/<\/?[!\w\-:]+(\s+\w+\s*(=\s*(\‘[^\‘]*\‘|\"[^\"]*\"|[^\s\‘\"<>]+))*)*\/?\s*>/g, ‘‘);
      }
      //-->
      </SCRIPT>
      響應(yīng)者 26:
      To zhangfmIT():

      哈哈,不是不理你,是你的代碼在我這邊運(yùn)行不了,總出錯(cuò),所以我也沒法試驗(yàn)了啊

      而且,我主要是來問如何從
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)">texttexttext</a>
      里用正則表達(dá)式取出“texttexttext”的,呵呵
      響應(yīng)者 27:
      sorry,偶也看錯(cuò)了
      響應(yīng)者 28:
      對于有轉(zhuǎn)義的 \" \" 還是不行:


      -----------------------------------
      恐怕這里不能用[^]這個(gè)來匹配了,覺得?!這種應(yīng)該可以
      響應(yīng)者 29:
      呵呵,加這個(gè)東西應(yīng)該沒有問題,只是我想試試不用非貪婪和預(yù)查,是否也能解決問題
      響應(yīng)者 30:
      To zhangfmIT() again:
      你的代碼可以運(yùn)行起來,不過需要改為<script language="JAVAscript">后才能執(zhí)行。

      To 天外水火:
      <a href="..." onclick=if(this.href.length>30)alert(‘too big‘) name=asd>texttexttext</a>
      這是非法的html代碼。onclick事件不會被執(zhí)行。所以如果在正確的頁面中,這種情況應(yīng)該是不會存在的。第二個(gè)小Bug也是小概率事件 :)
      響應(yīng)者 31:
      在Dhtml中, " 和 \" 它們的長度都是一。也就是說,它們實(shí)際上是同一個(gè)東西。
      比如:
      var s1=‘"‘;
      var s2=‘\"‘;
      s1和s2是全相等的。
      響應(yīng)者 32:
      是啊,現(xiàn)在的問題是meizz說的那個(gè)還行
      <a href="..." onclick="if(this.href.length>30)alert(\"too big\")" name=asd>texttexttext</a>
      響應(yīng)者 33:
      <a href="..." onclick="if(this.href.length>30)alert(\"too big\")" name=asd>texttexttext</a>
      這種寫法本身就是非法的啊,也就是說
      onclick="if(this.href.length>30)alert(\"too big\")"
      當(dāng)于
      onclick="if(this.href.length>30)alert("too big")",
      所以對于一個(gè)正確的頁面,是不太應(yīng)該出現(xiàn)的。
      響應(yīng)者 34:
      1、為什么“<a href="..." onclick=if(this.href.length>30)alert(‘too big‘) name=asd>texttexttext</a>
      這是非法的html代碼。onclick事件不會被執(zhí)行”呢?

      <a href="page2.html" onClick="count++;alert(count);">下一頁</a>

      2、弱弱的問下,那個(gè)正則[!\w\-:]什么意思
      響應(yīng)者 35:
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)" name=as>d>texttexttext</a>

      呵呵,怎么去告訴程序name是as>d還是as呢,規(guī)范的寫的話屬性不是都加引號嗎,那就ok了~
      響應(yīng)者 36:
      不管合不合了吧,也可以實(shí)現(xiàn)了,呵呵
      <textarea id="txt" style="width: 100%; height: 200px">
      aa<b disabled style="color: red" > > </b> < bb
      <br/><u>xixxxxxxxxxxxxxxxxxx
      <a
      href="..." onclick="if(this.href.length>30)alert(‘too big‘)">texttexttext</a>
      <a href="..." onclick="if(this.href.length>30)alert(‘too big‘)" name=asd>texttexttext</a>
      <a href="..." onclick="if(this.href.length>30)alert(\"too big\")" name=asd>texttexttext</a>
      </u>
      </textarea>
      <input type="button" value="ok" onclick="mm()" />
      <SCRIPT LANGUAGE="JAVAScript">
      <!--
      function mm()
      {
      var e=document.getElementById(‘txt‘);
      e.value=e.value.replace(/<\/?[!\w\-:]+(\s+\w+\s*(=\s*(\‘(?:((\\\‘)|[^\‘]))*\‘|\"(?:((\\\")|[^\"]))*\"|[^\s\‘\"<>]+))*)*\/?\s*>/g, ‘‘);
      }
      //-->
      </SCRIPT>
      響應(yīng)者 37:
      上面很多的測試內(nèi)容只是舉個(gè)例子,有的地方有一些語法錯(cuò)誤
      [!\w\-:]是因?yàn)閈w不能包含!、:、-字符
      響應(yīng)者 38:

      都是強(qiáng)人,暈中~
      響應(yīng)者 39:
      真是感謝大家的熱心解答啊,哈哈,謝謝謝謝 ?。?!
      響應(yīng)者 40:
      感謝強(qiáng)人。。。留影。收藏。。。。。。
      響應(yīng)者 41:
      我用.NET是這么做的!
      strCNLetter = Regex.Replace(strMyhtml,"<[^>]*>", "");
      strCNLetter = Regex.Replace(strCNLetter,"\\s+", " ");//替換空格
      響應(yīng)者 42:
      都跑首頁上去了,mark下
      響應(yīng)者 43:
      又有新突破,我在國外的網(wǎng)站上,找到了php中,strip_tags()函數(shù)所使用的正則表達(dá)式了,如下:
      </?\w+((\s+\w+(\s*=\s*(?:".*?"|\‘.*?\‘|[^\‘">\s]+))?)+\s*|\s*)/?>
      似乎比樓上幾位大大的要簡練一些,而且那此敏感字符都能夠被正確處理。

      此表達(dá)式,值得收藏?。。?!
      響應(yīng)者 44:
      ╭═══╮ ╭═══╮ ╭══════╮   
      ╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮  
       ║ ║   ║ ║   ║ ║  ╰╮╰╮ 
       ║ ║   ║ ║   ║ ║   ║ ║ 
       ║ ║   ║ ║   ║ ║  ╭╯╭╯ 
       ║ ║   ║ ║   ║ ╰══╯╭╯  
       ║ ║   ║ ║   ║ ╭═══╯   
       ║ ║   ║ ║   ║ ║       
       ╰╮╰╮ ╭╯╭╯   ║ ║       
        ╰╮╰═╯╭╯   ╭╯ ╰╮      
         ╰═══╯    ╰═══╯
      響應(yīng)者 45:
      ╭═══╮ ╭═══╮ ╭══════╮   
      ╰╮ ╭╯ ╰╮ ╭╯ ╰╮ ╭══╮╰╮  
       ║ ║   ║ ║   ║ ║  ╰╮╰╮ 
       ║ ║   ║ ║   ║ ║   ║ ║ 
       ║ ║   ║ ║   ║ ║  ╭╯╭╯ 
       ║ ║   ║ ║   ║ ╰══╯╭╯  
       ║ ║   ║ ║   ║ ╭═══╯   
       ║ ║   ║ ║   ║ ║       
       ╰╮╰╮ ╭╯╭╯   ║ ║       
        ╰╮╰═╯╭╯   ╭╯ ╰╮      
         ╰═══╯    ╰═══╯
      響應(yīng)者 46:
      看了一下你后來提供的這個(gè)正則,說實(shí)話還不如我的正確度高:
      \".*?\" 匹配不了換行符的,所以沒有 \"[^\"]*\" 好。
      且我一直避免使用 ?: 這種預(yù)查功能是為了兼容 IE5.0
      響應(yīng)者 47:
      引用
      呵呵,加這個(gè)東西應(yīng)該沒有問題,只是我想試試不用非貪婪和預(yù)查,是否也能解決問題

      -----------------------------------------------------------
      上邊這句應(yīng)該是有含義的,我涉足程序的時(shí)間比較短,對版本方面的知識還要多學(xué)習(xí),查了下資料,手頭上沒有低版本的機(jī)器,沒辦法測試,帖出來大家看看

      非貪婪匹配 ie5.0以上(不含5.0)
      預(yù)查 ie5.0以上(不含5.0)
      replace()function返回不同的匹配值 5.5以上
      響應(yīng)者 48:
      能否直接替換掉texttexttext?
       

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多