马黑黑 发表于 2025-3-16 09:10

正则表达式匹配Web代码注释

本帖最后由 马黑黑 于 2025-3-16 09:23 编辑 <br /><br /><style>
        .artbox { width: 700px; text-align: center; margin: 20px auto; }
        .artbox > textarea { width: 320px; height: 360px; font: normal 16px Consolas, monospace; padding: 8px; box-sizing: border-box; }
        .artbox > p { margin: 8px 0; }
</style>

<div class="artbox">
        <h3>正则 :匹配Web代码注释</h3><br>
        <textarea id="source"></textarea>
        <textarea id="result"></textarea>
        <p><button id="btnCalc" type="button">查看匹配结果</button></p>
</div>

<script>
// 正则式子
const reg = /\/\*[\s\S]*?\*\/|(?<!https?:)\/\/[^\n]*|<!--[\s\S]*?-->/g;

btnCalc.onclick = () => {
        result.value = source.value.match(reg).join('\n');
};

source.value = `http://www.gxblk.com //网址1
https://www.gxblk.com//网址2
// JS注释行
/* JS&CSS单行注释 */
/*
    JS&CSS多行注释
    654321
*/
<!-- html单行注释样式 -->
<!--
    HTML多行注释
    123456
-->`;
</script>

马黑黑 发表于 2025-3-16 09:20

本帖最后由 马黑黑 于 2025-3-16 09:21 编辑

构建的正则表达式:

/\/\*[\s\S]*?\*\/|(?<!https?:)\/\/[^\n]*|<!--[\s\S]*?-->/g

共 3 条表达式:

红色 :匹配 /* ... */
蓝色 :匹配 // ... 但回避网址
洋红 :匹配 <!-- ... -->


/g 是一个修正符(修饰符、限制符、开关),全局匹配


正则式子蓝色部分中使用了后瞻断言

红影 发表于 2025-3-16 09:29

看到显示结果还在奇怪,注释本来不显示,这个却是专门显示了注释呢。
看了说明,原来是用正则去匹配,强制显示?

红影 发表于 2025-3-16 09:32

正则表达式的字符串看得太晕了{:4_173:}

梦江南 发表于 2025-3-16 09:51

好好学习,天天向上。

马黑黑 发表于 2025-3-16 11:08

梦江南 发表于 2025-3-16 09:51
好好学习,天天向上。

{:4_190:}

马黑黑 发表于 2025-3-16 11:13

红影 发表于 2025-3-16 09:29
看到显示结果还在奇怪,注释本来不显示,这个却是专门显示了注释呢。
看了说明,原来是用正则去匹配,强制 ...

这是为了展示匹配的结果:凡是匹配的,都把它们罗列出来。

正则首先考虑匹配问题。当可以判断是否匹配了,怎么处理匹配的结果根据使用场景做处理。

至于注释是否显示,这取决于注释在不同场景下的决策:于代码中,注释是要显示的,于Web呈现在浏览器的结果,注释是不会显示的。而一楼则是用文本框来呈现代码,相当于代码环境。

马黑黑 发表于 2025-3-16 11:14

红影 发表于 2025-3-16 09:32
正则表达式的字符串看得太晕了

这个几乎没有谁不晕的,我估计连正则的设计做者都会晕。但是,一旦需要,就得去研究、设计,彼时渐渐会适应,神清气爽只是个时间问题

花飞飞 发表于 2025-3-16 12:44

没看懂啥意思,不过呢支持所有代码都加注释。。{:4_173:}

马黑黑 发表于 2025-3-16 13:40

花飞飞 发表于 2025-3-16 12:44
没看懂啥意思,不过呢支持所有代码都加注释。。

谢加

红影 发表于 2025-3-16 14:06

马黑黑 发表于 2025-3-16 11:13
这是为了展示匹配的结果:凡是匹配的,都把它们罗列出来。

正则首先考虑匹配问题。当可以判断是否匹配 ...

哦,原来这个相当于代码环境,所以注释显示了,而且只显示了与正则匹配上的内容。嗯,现在明白了{:4_187:}

红影 发表于 2025-3-16 14:07

马黑黑 发表于 2025-3-16 11:14
这个几乎没有谁不晕的,我估计连正则的设计做者都会晕。但是,一旦需要,就得去研究、设计,彼时渐渐会适 ...

我现在还晕着,要到神清气爽还需要走很长的一段路{:4_173:}

花飞飞 发表于 2025-3-16 21:18

马黑黑 发表于 2025-3-16 13:40
谢加

加队不在{:4_170:}

马黑黑 发表于 2025-3-16 21:55

花飞飞 发表于 2025-3-16 21:18
加队不在

治病中

马黑黑 发表于 2025-3-16 22:05

红影 发表于 2025-3-16 14:07
我现在还晕着,要到神清气爽还需要走很长的一段路

走走就到

马黑黑 发表于 2025-3-16 22:06

红影 发表于 2025-3-16 14:06
哦,原来这个相当于代码环境,所以注释显示了,而且只显示了与正则匹配上的内容。嗯,现在明白了{:4_187: ...

显示什么是自己设定的,通过编程实现。

比方讲,如果想删掉代码中的注释,以提升代码投入生产后的运行效率,那么,就将匹配到的注释删除掉

红影 发表于 2025-3-16 22:41

马黑黑 发表于 2025-3-16 22:05
走走就到

我连方向都没有,走到哪去自己都不知道,说不定迷路了呢{:4_173:}

红影 发表于 2025-3-16 22:42

马黑黑 发表于 2025-3-16 22:06
显示什么是自己设定的,通过编程实现。

比方讲,如果想删掉代码中的注释,以提升代码投入生产后的运行 ...

原来不但能找到它们,还能批量进行处理。嗯,这个功能好{:4_187:}

马黑黑 发表于 2025-3-17 18:10

红影 发表于 2025-3-16 22:42
原来不但能找到它们,还能批量进行处理。嗯,这个功能好

正则就是做这个

马黑黑 发表于 2025-3-17 18:10

红影 发表于 2025-3-16 22:41
我连方向都没有,走到哪去自己都不知道,说不定迷路了呢

到哪儿都差不多的
页: [1] 2 3 4
查看完整版本: 正则表达式匹配Web代码注释