慕哥6287543
我的建议是使用一个可以将对象解析为规则的库,正如@Jakub 所建议的那样。此答案使用以下正则表达式 ,/#(?!:[\w]+)(?=([\w\d\[\]\,\*\=\>\.\s]*[\{\,\[]+))/g它应该有效匹配,#因为它继续进行未捕获的组(代表 Id 本身),然后继续进行正向前瞻组(作为一系列单词 ( a-zA-Z0-9_) 和特殊字符,包括空格和换行符) , , {, ,, [)。var outputElm = document.getElementById("output");var importedCode = `div#xyz, #xyz, div#xyz[id='xyz'], .def>#xyz, .def>div#xyz, .def>#xyz, .def>div#xyz[id=*]{ color:#ee2ee2;}@media (min-width: 30em) and (orientation: landscape) { .abc{ background-color :#FFFFFF; border-color:1px solid #eee ; } .def>#xyz, .def #xyz, .def>#xyz{border-color:1px solid #ddd;} .def>#xyz>div, .def #xyz div, .def>#xyz>div.abc {border-color:1px solid #ddd;}}`;var replaceIdRegex = /#(?!:[\w]+)(?=([\w\d\[\]\,\*\=\>\.\s]*[\{\,\[]+))/g;outputElm.innerText = importedCode.replace(replaceIdRegex, ".");<p id="output"></p>我已经对此进行了相当多的测试,但我不能说它不脆弱或可以解释所有情况。您也可以在regex101 playground上测试这个实现。