亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js正則怎么刪除單行注釋?

js正則怎么刪除單行注釋?

千萬里不及你 2019-03-05 21:15:30
我本來這樣寫的:var s = "var a = 'test'; // 1234678"s.replace(/\/\/[\s\S]*?\n?$/,'');后來發現,代碼中還有這樣的代碼:var a = '://'+host;// 123456var s = "  //  tset "; // testvar a = 'http://www.a.com//b/c';所以好復雜啊,不知道這正則該怎么寫了==
查看完整描述

4 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

JS的正則不支持(?'xx') 和 (?-‘xx’) 感覺不太好表示狀態,所以自己解析代碼吧


查看完整回答
反對 回復 2019-03-28
?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

自己寫了這樣的代碼,目前是能解決已經想到的代碼匹配了,肯定還有坑


str.replace(/[\x20\S]*\/\/[\x20\S]*?\n?$/gm, function(v) {

        if (/^\x20*\/\/|^\x20*\/\//.test(v)) { return '' }

        if (/[,;]\x20*\/\//.test(v)) { return v.replace(/([,;])\x20*\/\/[\x20\S]*?\n?$/m, '$1') }

        return v

    })

后來又發現了這樣的代碼:


{

    a:"aa",

    b:"bb"//目標字段名

}

wtf


查看完整回答
反對 回復 2019-03-28
?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

要寫出適用所有情況的正則是不可能的,正則表達式不能解決類似括號、引號匹配的問題,而如果要解決你的問題,又要適用所有情況,包括一行內故意寫了多個字符串等情況,不做語法分析是不可能的,但你仍然可以用正則解決部分問題,一些特殊的情況是可以解決的,可以試試斷言什么的


查看完整回答
反對 回復 2019-03-28
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

做了很多嘗試,看看這個。


removeComment(`' : //'+host;// 123456`); // ' : //'+host;


function removeComment(str) {

  const reg = /("([^\\\"]*(\\.)?)*")|('([^\\\']*(\\.)?)*')|(\/{2,}.*?(\r|\n|$))|(\/\*(\n|.)*?\*\/)/g;

  return str.replace(reg, function(s) { 

    return /^\/{2,}/.test(s) || /^\/\*/.test(s) ? "" : s; 

  });

}


查看完整回答
反對 回復 2019-03-28
  • 4 回答
  • 0 關注
  • 677 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號