6

你知道是否有一种聪明的方法来注释包含包含 */ 的正则表达式的代码块?

例如,我发现自己在评论一个包含此指令的块:

...

messageParser.run('messageFetched',/.*/);

...

但是,如果我评论该块:

/*

messageParser.run('messageFetched',/.*/);

*/

然后javascript将正则表达式解释为注释关闭并且无法解析文件。我试着把 // 放在有问题的行前面,但这没有帮助,我不想评论块中的每一行,也不想改变正则表达式的东西。

有一个聪明的方法来做到这一点?

4

3 回答 3

2

将您的正则表达式修改为/(.*)/

messageParser.run('messageFetched',/(.*)/);

/*
messageParser.run('messageFetched',/(.*)/);
*/
于 2013-10-12T18:57:39.013 回答
2

我这样做的“聪明”方式......

将您的代码移动到一个函数中,如下所示:

function mP () {
   messageParser.run('messageFetched',/.*/);
}

然后你可以使用

/*
mP();
*/

基本上,它将您的正则表达式移开,这样您就可以自由地使用块注释,而无需修改正则表达式代码。

于 2013-10-12T19:01:26.560 回答
1

我知道我迟到了,因为已经选择了最佳答案,但是由于您正在寻找“聪明的把戏”,我建议以一个空的非捕获组结束:

/.*(?:)/

这相当于:

/.*/

如果您不想更改任何代码,这是最方便的。(例如通过重构或作为引入捕获组的副作用。)它在语义上也是相同的(引入捕获组不会,并且可能导致需要重写逻辑)并且与函数相比具有更少的负面性能影响代理。

官方的 ECMAScript 规范(JavaScript 语言所基于)实际上建议使用一个空的非捕获组 /(?:)/ 来表示一个“空”的正则表达式。

于 2013-10-12T21:47:01.827 回答