正则表达式匹配单行、多行注释思路以及代码详解

2024-03-01 0 551
目录
  • 单行注释
  • 多行注释/JSDoc注释
  • 总结

该正则表达式用于匹配单行注释、多行注释、JSDoc注释

我的需求是用new Function去执行一段javascript代码,怕代码一多,注释会影响效率,因此我需要寻找字符串的所有类型的注释,将其全部替换为空字符串。

如果仅需要表达式可以直接查看文末总结处

单行注释

//我是单行注释

它的正则表达式长这样,因为要匹配多个结果,因此使用g修饰符进行全局搜索

正则表达式匹配单行、多行注释思路以及代码详解

const regexp = /\\/\\/.+\\n?/g

用正则表达式测试工具进行匹配,匹配结果如下图

正则表达式匹配单行、多行注释思路以及代码详解

我们知道\\反斜杠是作为转义字符使用的,所以该表单是是全局匹配 //后面加上一个或多个除换行符以外的所有字符

正则表达式匹配单行、多行注释思路以及代码详解

细心的同学可能会发现,测试的时候并没有\\n?,是的,上面测试的正则忽略了换行符

正则表达式匹配单行、多行注释思路以及代码详解

我们直接把匹配到的内容替换为空字符串,发现有好几个换行符,因为正则表达式的.表示除换行符以外的所有字符,但我们如果还希望把换行符删除,那就得在后面添加\\n换行符了

正则表达式匹配单行、多行注释思路以及代码详解

然后我们又发现匹配不到最后一行的注释,是的,因为最后一行的注释后面没有换行符,不满足我们的正则表达式,我们肯定是希望能够匹配到的,那么我们最后再对表达式做一下修改,在\\n后面添加?,表示匹配0个或者1个换行符即可

正则表达式匹配单行、多行注释思路以及代码详解

匹配单行注释的表达式就介绍到这里了,下面是多行注释。

多行注释/JSDoc注释

/*
我是多行的多行注释
*/
/* 我是单行的多行注释 */
/**
* JSDoc注释
* @param xxx
*/

它的正则表达式长这样

const regexp = /\\/\\*[^\\/]*\\*\\/\\n?/g

下文把以/*开头,*/结尾的注释称为多行注释

多行注释又有两种情况,一种是多行的多行注释 ,一种是单行的多行注释

而JSDoc注释本质上也就是多行注释,

我的匹配思路是,/*+除了/的任意字符+*/ + \\n换行符(若有)

首先是匹配/*,表达式如下

const regexp = /\\/\\*/g

正则表达式匹配单行、多行注释思路以及代码详解

这样注释的开头就匹配出来了。

然后是匹配除了/的任意字符

const regexp = /[^\\/]*/g

正则表达式匹配单行、多行注释思路以及代码详解

上述正则表达式的意思是匹配0次或者多次除了/之外的字符

这边使用/*+除了/的任意字符进行匹配,从/*一直匹配到/(不包含)为止,匹配结果如下

正则表达式匹配单行、多行注释思路以及代码详解

最后匹配*/ + \\n换行符(若有)

const regexp = /\\*\\/\\n?/g

注意为啥最后要匹配*/ 而不是/,先看一下直接匹配/,如下图

正则表达式匹配单行、多行注释思路以及代码详解

我们可以看到图中圈出的这种情况下,/* /abc */直接匹配了/* /,这肯定不是预期效果,如果替换掉肯定语法报错了,因此我们宁愿不匹配这个,所以即使我们从/*匹配到/,也需要对注释结束进行限制,必须以*/结束才匹配,下面是匹配的最终效果。

正则表达式匹配单行、多行注释思路以及代码详解

正则表达式匹配单行、多行注释思路以及代码详解

最后我们使用 |把单行注释和多行注释合并在一起的到匹配单行注释多行注释的正则表达式

const regexp = /\\/\\*[^\\/]*\\*\\/|\\/\\/.+\\n?/g

正则表达式匹配单行、多行注释思路以及代码详解

总结

匹配单行注释正则表达式

const regexp = /\\/\\/.+\\n?/g

匹配多行注释正则表达式

const regexp = /\\/\\*[^\\/]*\\*\\//g

匹配单行/多行注释正则表达式

const regexp = /\\/\\*[^\\/]*\\*\\/|\\/\\/.+\\n?/g

到此这篇关于正则表达式匹配单行、多行注释思路以及代码详解的文章就介绍到这了,更多相关正则表达式匹配单行多行注释内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • javascipt匹配单行和多行注释的正则表达式
  • javascript匹配js中注释的正则表达式代码

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 正则表达式 正则表达式匹配单行、多行注释思路以及代码详解 https://www.u-9.cn/biancheng/zhengze/181159.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务