Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲综合狠狠,在线精品福利视频你懂的,免费日本一区

          整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          Javascript正則表達(dá)式示例之HTML標(biāo)簽及H

          Javascript正則表達(dá)式示例之HTML標(biāo)簽及HTML語法樹

          一節(jié)聊到正則表達(dá)式的簡單應(yīng)用,不足之處歡迎留言交流。

          Javascript正則表達(dá)式示例之基本概念

          今天,我們來看一下,如何使用正則表達(dá)式,匹配HTML標(biāo)簽及相關(guān)信息。

          為什么要加上相關(guān)信息呢?

          因?yàn)椋绻雽懸粋€(gè)HTML語法樹解析庫的時(shí)候,可能會(huì)用到。


          下面內(nèi)容用到的語法

          |:表示或者,要么前面,要么后面

          (?<=我前面出現(xiàn)的內(nèi)容)要匹配的內(nèi)容:只匹配前面出現(xiàn)的字符之后的內(nèi)容。

          可視圖

          要匹配的內(nèi)容(?=我前面出現(xiàn)的內(nèi)容):只匹配后面出現(xiàn)的字符之前的內(nèi)容。

          可視圖

          分組捕獲:一對(duì)完整的小括號(hào)(),表示一個(gè)組。

          \數(shù)字:你要使用那一個(gè)分組捕獲到的內(nèi)容。

          .*?:在正則表達(dá)式中,. 表示匹配任意字符,* 表示匹配 0 到任意次的前一個(gè)字符,? 表示非貪婪匹配,即盡可能匹配最少的字符。因此,.*? 表示匹配任意字符零次或多次,但盡可能匹配最少的字符。這個(gè)表達(dá)式通常用于匹配一個(gè)字符串中的所有內(nèi)容,但是避免貪婪匹配導(dǎo)致的匹配錯(cuò)誤。

          ^: 表示匹配開始

          [要匹配的字符]:只匹配括號(hào)中的字符。

          比如[0-9]、[a-z]、[A-Z]、[0-9a-zA-Z]、[0-9abc]等等。

          [^要匹配的字符]:[]中加^表示匹配不是“要匹配的字符”。


          1、匹配所有HTML標(biāo)簽,并清空。實(shí)現(xiàn)innerText類似的功能。

          <body><div id="left">left</div><div id="right">right</div></body>
          const text=document.body.innerText;
          text=text.replace(/\n/g, '');
          console.log(text);
          //輸出: leftright

          假設(shè)沒有innerText的功能呢?實(shí)現(xiàn)這個(gè)功能,使用正則表達(dá)式無疑是最方便的。

          var text=document.body.innerHTML.replace(/<[^>]+>/g,'');
          text=text.replace(/\n/g, '');
          console.log(text);
          //輸出: leftright

          匹配結(jié)果

          可視圖


          是的,這個(gè)正則表達(dá)式的意思是,查找<>并且包含他們之間不為>的一段字符串。

          到這里,您以為就結(jié)束了嗎?您在網(wǎng)上搜索匹配HTML標(biāo)簽,可能也會(huì)得到這么一個(gè)結(jié)果(例如:<[^>]+>、<.*?>、等等),但實(shí)際上這只是開始,我們本著只要是程序就可能有bug的原則,所以我們來看下面一個(gè)例子。

          const strHtml='<span data-code=">">>是大于符號(hào)。</span>';
          const strRes=strHtml.replace(/<[^>]+>/g, '');
          console.log(strRes);
          // ">>是大于符號(hào)。

          [可憐]bug出現(xiàn)了,怎么辦?別著急,請(qǐng)看下一個(gè)知識(shí)點(diǎn)。


          2、匹配HTML標(biāo)簽屬性,是寫一個(gè)HTML語法樹要經(jīng)歷的事情。


          2.1、首先,我們先解決第一點(diǎn)最后的bug。

          const strHtml='<span data-code=">">>是大于符號(hào)。</span>';
          // 一個(gè)小改動(dòng)即可。
          const strRes=strHtml.replace(/<("[^"]*"|[^>])+>/g, '');
          console.log(strRes);
          // >是大于符號(hào)。

          可視圖

          完美[打臉] ,還沒結(jié)束……

          const strHtml="<span data-code='>'>>是大于符號(hào)。</span>";
          const strRes=strHtml.replace(/<("[^"]*"|[^>])+>/g, '');
          console.log(strRes);
          // '>>是大于符號(hào)。

          甲:這不是我寫的HTML不標(biāo)準(zhǔn),是你的解析庫兼容性不好,瀏覽器都可以識(shí)別,你為什么不可以?

          已:……。

          const strHtml=`<i code="<"><小于符號(hào)。</i><i code='>'>>大于符號(hào)。</i>`;
          // 繼續(xù)改造
          const strRes=strHtml.replace(/<((["'])+.*?\2|[^>])+>/g, '');
          console.log(strRes);
          // <小于符號(hào)。>大于符號(hào)。

          匹配結(jié)果

          可視圖

          是的,利用正則表達(dá)式分組捕獲的語法,實(shí)現(xiàn)了上面的需求。


          2.2 現(xiàn)在,我們來看看,如何找到某個(gè)標(biāo)簽的所有屬性。

          const strHtml=`
          <input type='text' disabled value="" class="txt txt-md" v-on:click="save('button')" />
          `;

          上面的例子中,有多種情況,我們首先來整理出來。

          屬性1:type='text'

          /[\w]+=(["'])+.*?/

          屬性2:disabled

          /[\w]+/

          屬性3:value=""

          /[\w]+=(["'])+.*?/

          屬性4:class="txt txt-md"

          /[\w]+=(["'])+.*?/

          屬性5:v-on:click="save('button')"

          /[\w:]+=(["'])+.*?/

          其他情況:歡迎討論。

          把所有情況連起來之后。

          const strHtml=`<input type='text' disabled value="" class="txt txt-md" v-on:click="save('button')" />`;
          const tagAttrs=strHtml.match(/(?<=\s)[\w:-]+(=(["']).*?\2)*/g) || [];
          console.log(tagAttrs);
          //  ["type='text'", 'disabled', 'value=""', 'class="txt txt-md"', `v-on:click="save('button')"`]

          匹配結(jié)果

          可視圖

          人人為我,我為人人,歡迎您的瀏覽,我們一起加油吧。

          1題. 編寫一個(gè)Filter,需要()

          A. 繼承Filter 類

          B. 實(shí)現(xiàn)Filter 接口

          C. 繼承HttpFilter 類

          D. 實(shí)現(xiàn)HttpFilter接口

          正確答案為:B


          第2題. 自定義標(biāo)簽的配置文件放在________

          A. WebRoot

          B. lib

          C. classes

          D. WEB-INF

          正確答案為:D


          第3題. 有關(guān)會(huì)話跟蹤技術(shù)描述正確的是(多選)

          A. Cookie是Web服務(wù)器發(fā)送給客戶端的一小段信息,客戶端請(qǐng)求時(shí),可以讀取該信息發(fā)送到服務(wù)器端

          B. 關(guān)閉瀏覽器意味著會(huì)話ID丟失,但所有與原會(huì)話關(guān)聯(lián)的會(huì)話數(shù)據(jù)仍保留在服務(wù)器上,直至?xí)掃^期

          C. 在禁用Cookie時(shí)可以使用URL重寫技術(shù)跟蹤會(huì)話

          D. 隱藏表單域?qū)⒆侄翁砑拥紿TML表單并在客戶端瀏覽器中顯示

          正確答案為:ABC


          第4題. 在J2EE中,重定向到另一個(gè)頁面,以下()語句是正確的

          A. request . sendRedirect(“http :// www . svse . com . cn”);

          B. request . sendRedirect();

          C. response . sendRedirect(“http: // www . svse . com . cn”);

          D. response .sendRedirect();

          正確答案為:C


          第5題. EL表達(dá)式,${10 mod3},執(zhí)行結(jié)果為:

          A. 10 mod 3

          B. 1

          C. 3

          D. null

          正確答案為:B


          第6題. 自定義標(biāo)簽的作用是

          A. 編寫和使用方便

          B. 規(guī)定是這樣的,如果不用,別人會(huì)說我們不專業(yè)

          C. 可以減少jsp中的java代碼,將代碼與界面標(biāo)簽分離,簡化前臺(tái)開發(fā)

          D. 連數(shù)據(jù)庫

          正確答案為:C


          第7題. request.getRequestDispatcher().forward(request,response)稱之為

          A. 流轉(zhuǎn)

          B. 轉(zhuǎn)發(fā)

          C. 重定向

          D. 導(dǎo)航

          正確答案為:B


          第8題. 有關(guān)Servlet的生命周期說法正確的有 (多選)

          A. Servlet的生命周期由Servlet實(shí)例控制

          B. init()方法在創(chuàng)建完Servlet實(shí)例后對(duì)其進(jìn)行初始化,傳遞的參數(shù)為實(shí)現(xiàn)ServletContext接口的對(duì)象

          C. service()方法響應(yīng)客戶端發(fā)出的請(qǐng)求

          D. destroy()方法釋放Servlet實(shí)例

          正確答案為:BCD


          第9題. 在J2EE中,給定某Servlet的代碼如下,編譯運(yùn)行該文件,以下陳述正確的是()。(選擇一項(xiàng))

          Public class Servlet1 extends HttpServlet{

          Publicvoid init() throws ServletException{

          }

          Publicvoid service(HttpServletRequest request,HttpServletResponse response)

          ThrowsServletException,IOException{

          PrintWriterout=response.getWriter();

          out.println(“hello!”);

          }

          }

          A. 編譯該文件時(shí)會(huì)提示缺少doGet()或者dopost()方法,編譯不能夠成功通過

          B. 編譯后,把Servlet1.class放在正確位置,運(yùn)行該Servlet,在瀏覽器中會(huì)看到輸出文字:hello!

          C. 編譯后,把Servlet1.class放在正確位置,運(yùn)行該Servlet,在瀏覽器中看不到任何輸出的文字

          D. 編譯后,把Servlet1.class放在正確位置,運(yùn)行該Servlet,在瀏覽器中會(huì)看到運(yùn)行期錯(cuò)誤信息

          正確答案為:B


          第10題. 在Servlet中,response.getWriter()返回的是____________

          A. JspWriter對(duì)象

          B. PrintWriter對(duì)象

          C. Out對(duì)象

          D. ResponseWriter對(duì)象

          正確答案為:B


          第11題. 在web.xml中使用___________標(biāo)簽配置過濾器

          A. <filter>和<filter-mapping>

          B. <filter-name>和<filter-class>

          C. <filter>和<filter-class>

          D. <filter-pattern>和<filter>

          正確答案為:A


          第12題. 自定義標(biāo)簽的描述文件在web.xml中配置正確的

          A. <taglib>

          <tag-uri>bob-tld</tag-uri>

          <tag-location>/WEB-INF/bob.tld</tag-location>

          </taglib>

          B. <tag>

          <taglib-uri>bob-tld</taglib-uri>

          <taglib-location>/WEB-INF/bob.tld</taglib-location>

          </tag>

          C. <jsp-taglib>

          <taglib-uri>bob-tld</taglib-uri>

          <taglib-location>/WEB-INF/bob.tld</taglib-location>

          </jsp-taglib>

          D. <jsp-config>

          <taglib>

          <taglib-uri>bob-tld</taglib-uri>

          <taglib-location>/WEB-INF/bob.tld</taglib-location>

          </taglib>

          </jsp-config>

          正確答案為:D


          第13題. J2EE中,Servlet API為使用Cookie,提供了()類。

          A. javax.servlet.http.Cookie

          B. javax.servlet.http.HttpCookie

          C. javax.servlet. Cookie

          D. javax.servlet.http.HttpCookie

          正確答案為:A

          碼: Lib/html/__init__.py

          該模塊定義了操作HTML的工具。

          • html.escape(s, quote=True)

          將字符串 s 中的字符``&`` 、 < 和 > 轉(zhuǎn)換為安全的HTML序列。 如果需要在 HTML 中顯示可能包含此類字符的文本,請(qǐng)使用此選項(xiàng)。 如果可選的標(biāo)志 quote 為真值,則字符 (") 和 (') 也被轉(zhuǎn)換;這有助于包含在由引號(hào)分隔的 HTML 屬性中,如 <a href="...">。

          • html.unescape(s)

          將字符串 s 中的所有命名和數(shù)字字符引用 (例如 >, >, >) 轉(zhuǎn)換為相應(yīng)的Unicode字符。 此函數(shù)使用HTML 5標(biāo)準(zhǔn)為有效和無效字符引用定義的規(guī)則,以及 HTML 5 命名字符引用列表。

          html 包中的子模塊是:

          html.parser —— 具有寬松解析模式的HTML / XHTML解析器

          html.entities – HTML 實(shí)體定義


          源代碼: Lib/html/parser.py


          這個(gè)模塊定義了一個(gè) HTMLParser 類,為 HTML(超文本標(biāo)記語言)和 XHTML 文本文件解析提供基礎(chǔ)。


          class html.parser.HTMLParser(*, convert_charrefs=True)

          創(chuàng)建一個(gè)能解析無效標(biāo)記的解析器實(shí)例。


          如果 convert_charrefs 為 True (默認(rèn)值),則所有字符引用( script/style 元素中的除外)都會(huì)自動(dòng)轉(zhuǎn)換為相應(yīng)的 Unicode 字符。


          一個(gè) HTMLParser 類的實(shí)例用來接受 HTML 數(shù)據(jù),并在標(biāo)記開始、標(biāo)記結(jié)束、文本、注釋和其他元素標(biāo)記出現(xiàn)的時(shí)候調(diào)用對(duì)應(yīng)的方法。要實(shí)現(xiàn)具體的行為,請(qǐng)使用 HTMLParser 的子類并重載其方法。


          這個(gè)解析器不檢查結(jié)束標(biāo)記是否與開始標(biāo)記匹配,也不會(huì)因外層元素完畢而隱式關(guān)閉了的元素引發(fā)結(jié)束標(biāo)記處理。

          HTMLParser 實(shí)例有下列方法:


          • HTMLParser.feed(data)

          填充一些文本到解析器中。如果包含完整的元素,則被處理;如果數(shù)據(jù)不完整,將被緩沖直到更多的數(shù)據(jù)被填充,或者 close() 被調(diào)用。data 必須為 str 類型。


          • HTMLParser.close()

          如同后面跟著一個(gè)文件結(jié)束標(biāo)記一樣,強(qiáng)制處理所有緩沖數(shù)據(jù)。這個(gè)方法能被派生類重新定義,用于在輸入的末尾定義附加處理,但是重定義的版本應(yīng)當(dāng)始終調(diào)用基類 HTMLParser 的 close() 方法。


          • HTMLParser.reset()

          重置實(shí)例。丟失所有未處理的數(shù)據(jù)。在實(shí)例化階段被隱式調(diào)用。


          • HTMLParser.getpos()

          返回當(dāng)前行號(hào)和偏移值。


          • HTMLParser.get_starttag_text()

          返回最近打開的開始標(biāo)記中的文本。 結(jié)構(gòu)化處理時(shí)通常應(yīng)該不需要這個(gè),但在處理“已部署”的 HTML 或是在以最小改變來重新生成輸入時(shí)可能會(huì)有用處(例如可以保留屬性間的空格等)。


          下列方法將在遇到數(shù)據(jù)或者標(biāo)記元素的時(shí)候被調(diào)用。他們需要在子類中重載。基類的實(shí)現(xiàn)中沒有任何實(shí)際操作(除了 handle_startendtag() ):


          • HTMLParser.handle_starttag(tag, attrs)

          這個(gè)方法在標(biāo)簽開始的時(shí)候被調(diào)用(例如: <div id="main"> )。


          tag 參數(shù)是小寫的標(biāo)記名。attrs 參數(shù)是一個(gè) (name, value) 形式的列表,包含了所有在標(biāo)記的 <> 括號(hào)中找到的屬性。name 轉(zhuǎn)換為小寫,value 的引號(hào)被去除,字符和實(shí)體引用都會(huì)被替換。


          實(shí)例中,對(duì)于標(biāo)簽 <A HREF="https://www.cwi.nl/">,這個(gè)方法將以下列形式被調(diào)用 handle_starttag('a', [('href', 'https://www.cwi.nl/')]) 。


          html.entities 中的所有實(shí)體引用,會(huì)被替換為屬性值。


          • HTMLParser.handle_endtag(tag)

          此方法被用來處理元素的結(jié)束標(biāo)記(例如: </div> )。


          tag 參數(shù)是小寫的標(biāo)簽名。


          • HTMLParser.handle_startendtag(tag, attrs)

          類似于 handle_starttag(), 只是在解析器遇到 XHTML 樣式的空標(biāo)記時(shí)被調(diào)用( <img ... />)。這個(gè)方法能被需要這種特殊詞法信息的子類重載;默認(rèn)實(shí)現(xiàn)僅簡單調(diào)用 handle_starttag() 和 handle_endtag() 。


          • HTMLParser.handle_data(data)

          這個(gè)方法被用來處理任意數(shù)據(jù)(例如:文本節(jié)點(diǎn)和 <script>...</script> 以及 <style>...</style> 中的內(nèi)容)。


          • HTMLParser.handle_entityref(name)

          這個(gè)方法被用于處理 &name; 形式的命名字符引用(例如 >),其中 name 是通用的實(shí)體引用(例如: 'gt')。如果 convert_charrefs 為 True,該方法永遠(yuǎn)不會(huì)被調(diào)用。


          • HTMLParser.handle_charref(name)

          這個(gè)方法被用來處理 &#NNN; 和 &#xNNN; 形式的十進(jìn)制和十六進(jìn)制字符引用。例如,> 等效的十進(jìn)制形式為 > ,而十六進(jìn)制形式為 > ;在這種情況下,方法將收到 '62' 或 'x3E' 。如果 convert_charrefs 為 True ,則該方法永遠(yuǎn)不會(huì)被調(diào)用。


          • HTMLParser.handle_comment(data)

          這個(gè)方法在遇到注釋的時(shí)候被調(diào)用(例如: <!--comment--> )。


          例如, <!-- comment --> 這個(gè)注釋會(huì)用 ' comment ' 作為參數(shù)調(diào)用此方法。


          Internet Explorer 條件注釋(condcoms)的內(nèi)容也被發(fā)送到這個(gè)方法,因此,對(duì)于 <!--[if IE 9]>IE9-specific content<![endif]--> ,這個(gè)方法將接收到 '[if IE 9]>IE9-specific content<![endif]' 。


          • HTMLParser.handle_decl(decl)

          這個(gè)方法用來處理 HTML doctype 申明(例如 <!DOCTYPE html> )。


          decl 形參為 <!...> 標(biāo)記中的所有內(nèi)容(例如: 'DOCTYPE html' )。


          • HTMLParser.handle_pi(data)

          此方法在遇到處理指令的時(shí)候被調(diào)用。data 形參將包含整個(gè)處理指令。例如,對(duì)于處理指令 <?proc color='red'> ,這個(gè)方法將以 handle_pi("proc color='red'") 形式被調(diào)用。它旨在被派生類重載;基類實(shí)現(xiàn)中無任何實(shí)際操作。


          注解 HTMLParser 類使用 SGML 語法規(guī)則處理指令。使用 '?' 結(jié)尾的 XHTML 處理指令將導(dǎo)致 '?' 包含在 data 中。


          • HTMLParser.unknown_decl(data)

          當(dāng)解析器讀到無法識(shí)別的聲明時(shí),此方法被調(diào)用。


          data 形參為 <![...]> 標(biāo)記中的所有內(nèi)容。某些時(shí)候?qū)ε缮惖闹剌d很有用。基類實(shí)現(xiàn)中無任何實(shí)際操作。

          源碼: Lib/html/entities.py

          該模塊定義了四個(gè)詞典, html5、 name2codepoint、 codepoint2name、以及 entitydefs。


          • html.entities.html5

          將 HTML5 命名字符引用 1 映射到等效的 Unicode 字符的字典,例如 html5['gt;']=='>'。 請(qǐng)注意,尾隨的分號(hào)包含在名稱中(例如 'gt;'),但是即使沒有分號(hào),一些名稱也會(huì)被標(biāo)準(zhǔn)接受,在這種情況下,名稱出現(xiàn)時(shí)帶有和不帶有 ';'。另見 html.unescape()。


          • html.entities.entitydefs

          將 XHTML 1.0 實(shí)體定義映射到 ISO Latin-1 中的替換文本的字典。


          • html.entities.name2codepoint

          將 HTML 實(shí)體名稱映射到 Unicode 代碼點(diǎn)的字典。


          • html.entities.codepoint2name

          將 Unicode 代碼點(diǎn)映射到 HTML 實(shí)體名稱的字典。


          主站蜘蛛池模板: 福利一区在线视频| 亚洲一区二区精品视频| 性盈盈影院免费视频观看在线一区 | 亚洲一区中文字幕久久| 一色一伦一区二区三区| 三上悠亚国产精品一区| 狠狠爱无码一区二区三区| 欧美日韩精品一区二区在线观看| 久久精品一区二区三区日韩 | 亚洲乱码国产一区三区| 国产成人片视频一区二区| 国产一区二区三区免费在线观看| 亚洲日韩一区精品射精| 少妇一夜三次一区二区| 亚洲AV无码一区东京热| 嫩B人妻精品一区二区三区| 99精品久久精品一区二区| 中文字幕一区二区视频| 人妻内射一区二区在线视频| 日韩精品一区二区三区不卡| 视频一区二区在线播放| 视频在线一区二区三区| 成人无码一区二区三区| 免费看一区二区三区四区 | 精品香蕉一区二区三区| 99无码人妻一区二区三区免费 | 久久免费视频一区| 国精产品一区一区三区免费视频| 东京热无码一区二区三区av| 秋霞午夜一区二区| 91久久精品国产免费一区 | 亚洲视频在线一区| 97一区二区三区四区久久| 日韩一区二区免费视频| 亚洲国产一区视频| 久久久综合亚洲色一区二区三区 | 日本高清天码一区在线播放| 一区国严二区亚洲三区| 国产区精品一区二区不卡中文| 国产人妖视频一区二区| 亚洲AV无码国产一区二区三区|