正确匹配JS多行注释的每一行

时间:2013-10-24 19:41:38

标签: javascript regex

//我有字符串

var a = "/**  \n" + 
        "  * foo bar  \n" + 
        "  * baz bob  \n" + 
        "  *  \n" + 
        "  * Yes, it is a string containing a docstring  \n" + 
        "  */  ";

//有一些正则表达式的经验,我写了一个JavaScript正则表达式:

var r = /\/\*\*\s*(.*\s*)*\*\//g;

//正则表达式成功捕获了

//但只是第二次捕获中文档字符串的最后一行:

var match = r.exec(a.toString());  console.log(match);

// ["/**
//  * foo bar
//  * baz bob
//  * Yes, it is a string containing a docstring
//  */", 
//  "* Yes, it is a string containing a docstring"
// ]

//为了捕获此“字符串”中与match [1]类似的所有行,我还缺少什么?

//这个问题是它自己的小提琴。

1 个答案:

答案 0 :(得分:3)

dotall 标记,在大多数语言中都是s修饰符,在Javascript中不存在

您可以通过在字符类中一起使用\s及其否定\S来解决此问题。 [\S\s]

var r = /\/\*\*\s*([\S\s]*)\*\//g;