第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

RegEx用于匹配/替換JavaScript注釋(多行和內(nèi)聯(lián))

RegEx用于匹配/替換JavaScript注釋(多行和內(nèi)聯(lián))

我需要使用JavaScript RegExp對(duì)象從JavaScript源中刪除所有JavaScript注釋。我需要的是RegExp的模式。到目前為止,我發(fā)現(xiàn)了這一點(diǎn):compressed = compressed.replace(/\/\*.+?\*\/|\/\/.*(?=[\n\r])/g, '');此模式適用于以下情況:/* I'm a comment */或用于:/* * I'm a comment aswell*/但是似乎不適用于內(nèi)聯(lián):// I'm an inline comment我不是RegEx及其模式的專家,所以我需要幫助。另外,我想有一個(gè)RegEx模式,該模式將刪除所有這些類似HTML的注釋。<!-- HTML Comment //--> or <!-- HTML Comment -->還有那些條件HTML注釋,可以在各種JavaScript來源中找到這些注釋。謝謝。
查看完整描述

3 回答

?
米琪卡哇伊

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊

我一直在給togethor一個(gè)需要做類似事情的表情。

成品是:


/(?:((["'])(?:(?:\\\\)|\\\2|(?!\\\2)\\|(?!\2).|[\n\r])*\2)|(\/\*(?:(?!\*\/).|[\n\r])*\*\/)|(\/\/[^\n\r]*(?:[\n\r]+|$))|((?:=|:)\s*(?:\/(?:(?:(?!\\*\/).)|\\\\|\\\/|[^\\]\[(?:\\\\|\\\]|[^]])+\])+\/))|((?:\/(?:(?:(?!\\*\/).)|\\\\|\\\/|[^\\]\[(?:\\\\|\\\]|[^]])+\])+\/)[gimy]?\.(?:exec|test|match|search|replace|split)\()|(\.(?:exec|test|match|search|replace|split)\((?:\/(?:(?:(?!\\*\/).)|\\\\|\\\/|[^\\]\[(?:\\\\|\\\]|[^]])+\])+\/))|(<!--(?:(?!-->).)*-->))/g

嚇人吧?


為了分解,第一部分匹配單引號(hào)或雙引號(hào)內(nèi)的所有內(nèi)容,

這是避免匹配帶引號(hào)的字符串所必需的


((["'])(?:(?:\\\\)|\\\2|(?!\\\2)\\|(?!\2).|[\n\r])*\2)

第二部分匹配以/ * * /分隔的多行注釋


(\/\*(?:(?!\*\/).|[\n\r])*\*\/)

第三部分匹配單行注釋,該注釋從該行的任何地方開始


(\/\/[^\n\r]*(?:[\n\r]+|$))

第四到第六部分匹配正則表達(dá)式文字中的所有內(nèi)容,

這取決于前面的等號(hào)或正則表達(dá)式調(diào)用之前或之后的文字


((?:=|:)\s*(?:\/(?:(?:(?!\\*\/).)|\\\\|\\\/|[^\\]\[(?:\\\\|\\\]|[^]])+\])+\/))

((?:\/(?:(?:(?!\\*\/).)|\\\\|\\\/|[^\\]\[(?:\\\\|\\\]|[^]])+\])+\/)[gimy]?\.(?:exec|test|match|search|replace|split)\()

(\.(?:exec|test|match|search|replace|split)\((?:\/(?:(?:(?!\\*\/).)|\\\\|\\\/|[^\\]\[(?:\\\\|\\\]|[^]])+\])+\/))

我最初忘記的第七個(gè)刪除了html注釋


(<!--(?:(?!-->).)*-->)

我的開發(fā)環(huán)境為正則表達(dá)式發(fā)出錯(cuò)誤而導(dǎo)致行中斷,因此我遇到了問題,因此我使用了以下解決方案


var ADW_GLOBALS = new Object

ADW_GLOBALS = {

  quotations : /((["'])(?:(?:\\\\)|\\\2|(?!\\\2)\\|(?!\2).|[\n\r])*\2)/,

  multiline_comment : /(\/\*(?:(?!\*\/).|[\n\r])*\*\/)/,

  single_line_comment : /(\/\/[^\n\r]*[\n\r]+)/,

  regex_literal : /(?:\/(?:(?:(?!\\*\/).)|\\\\|\\\/|[^\\]\[(?:\\\\|\\\]|[^]])+\])+\/)/,

  html_comments : /(<!--(?:(?!-->).)*-->)/,

  regex_of_doom : ''

}

ADW_GLOBALS.regex_of_doom = new RegExp(

  '(?:' + ADW_GLOBALS.quotations.source + '|' + 

  ADW_GLOBALS.multiline_comment.source + '|' + 

  ADW_GLOBALS.single_line_comment.source + '|' + 

  '((?:=|:)\\s*' + ADW_GLOBALS.regex_literal.source + ')|(' + 

  ADW_GLOBALS.regex_literal.source + '[gimy]?\\.(?:exec|test|match|search|replace|split)\\(' + ')|(' + 

  '\\.(?:exec|test|match|search|replace|split)\\(' + ADW_GLOBALS.regex_literal.source + ')|' +

  ADW_GLOBALS.html_comments.source + ')' , 'g'

);


changed_text = code_to_test.replace(ADW_GLOBALS.regex_of_doom, function(match, $1, $2, $3, $4, $5, $6, $7, $8, offset, original){

  if (typeof $1 != 'undefined') return $1;

  if (typeof $5 != 'undefined') return $5;

  if (typeof $6 != 'undefined') return $6;

  if (typeof $7 != 'undefined') return $7;

  return '';

}

這將返回由引號(hào)引起來的字符串文本捕獲的任何內(nèi)容以及在正則表達(dá)式文字中完整保留的任何內(nèi)容,但對(duì)于所有注釋捕獲均返回一個(gè)空字符串。


我知道這太過分了,很難維護(hù),但是到目前為止,它確實(shí)對(duì)我有用。


查看完整回答
反對(duì) 回復(fù) 2019-10-28
  • 3 回答
  • 0 關(guān)注
  • 712 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)