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

 更新时间:2023年12月27日 11:28:11   作者:尘随风染  
正则表达式是一种强大的工具,用于在文本中进行模式匹配和搜索,下面这篇文章主要给大家介绍了关于正则表达式匹配单行、多行注释思路以及代码的相关资料,需要的朋友可以参考下

该正则表达式用于匹配单行注释、多行注释、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

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

相关文章

  • 正则表达式模式修饰符

    正则表达式模式修饰符

    下面列出了当前可用的正则表达式修饰符。括号中提到的名字是正则表达式内部这些修饰符的名称。 模式修饰符中的空格,换行符会被忽略,其他字符会导致错误
    2016-12-12
  • js 正则表达式 验证 a/b/c 格式的类型数据

    js 正则表达式 验证 a/b/c 格式的类型数据

    对一个文本框中输入的内容格式做出要求,格式为a/b/c这种类型数据,下面是具体的实现,大家可以学习下
    2014-01-01
  • javascript下正则匹配百分比的代码

    javascript下正则匹配百分比的代码

    javascript下正则匹配百分比的代码...
    2007-08-08
  • grep中使用

    grep中使用"\d"匹配数字不成功的原因解决

    这篇文章主要介绍了grep中使用"\d"匹配数字不成功的原因解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • ES9的新特性之正则表达式RegExp详解

    ES9的新特性之正则表达式RegExp详解

    这篇文章主要介绍了ES9的新特性之正则表达式RegExp详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 正则获取图片地址 链接地址

    正则获取图片地址 链接地址

    可以获取网页中所有的图片地址和链接地址的代码,好像一般用在获取网页中的资源地址时用的到
    2008-12-12
  • Notepad+正则表达式使用方法举例详解

    Notepad+正则表达式使用方法举例详解

    使用正则表达式可以很好地完成很多繁琐耗时的工作,下面这篇文章主要给大家介绍了关于Notepad+正则表达式使用方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Python如何使用正则表达式识别代码中的中文、英文和数字

    Python如何使用正则表达式识别代码中的中文、英文和数字

    正则表达式是一种强大的工具,可以帮助我们实现识别代码中的中文、英文和数字,本文将分三个部分详细介绍如何使用正则表达式在 Python 中识别代码中的中文、英文和数字,感兴趣的朋友跟随小编一起看看吧
    2023-06-06
  • 深入浅出解析正则表达式-替换原则

    深入浅出解析正则表达式-替换原则

    本文给大家分享的正则表达式的替换原则,这里讲到的替换是只能在替换模式中识别的语言元素。感兴趣的朋友跟着小编一起学习吧
    2015-09-09
  • 使用正则表达式从链接中获取图片名称

    使用正则表达式从链接中获取图片名称

    正则表达式有时可用来判断是否包含某些数据,有时可用来获取匹配数据,下面这篇文章主要给大家介绍了关于使用正则表达式从链接中获取图片名称的相关资料,需要的朋友可以参考下
    2022-05-05

最新评论