Javascript 如何在regexp中匹配空格、换行符

Javascript 如何在regexp中匹配空格、换行符,javascript,regex,Javascript,Regex,字符串内容 <head> <meta charset="UTF-8"> <title></title> <!--@require a.css--> <!--@require BOWER/jquery--> <!--@require /build/bundle--> <!-- @require bootstrap @require

字符串内容

<head>
    <meta charset="UTF-8">
    <title></title>
    <!--@require a.css-->
    <!--@require BOWER/jquery-->
    <!--@require /build/bundle-->
    <!--
        @require bootstrap
        @require bootstrap.css
        @require bootstrap.font
    -->
</head>
它与最后一个块不匹配,我的reg表达式中遗漏了什么。

(点)。匹配除换行符以外的任何字符,这就是最后一个字符串不匹配的原因。因此,您可以使用类似于
[\s\s]*
[^]
的内容来匹配任何字符。(参考号:)
var内容=`
`;
var reg=//g;
var-r;
while((r=reg.exec(content))!=null){
console.log(r[1]);

}
尝试添加多行标志(
m

//gm
试试这个

@require (.+?)?(?:-->|\s)

说明:
(…)
:捕获组
:除换行符以外的任何字符
+
:一个或多个
:一次或无
(?:…)
:非捕获组
|
:交替/或操作数
\s
:“空白字符”:空格、制表符、换行符、回车符、垂直制表符

输出:

MATCH 1
1.  [71-76] `a.css`
MATCH 2
1.  [97-109]    `BOWER/jquery`
MATCH 3
1.  [130-143]   `/build/bundle`
MATCH 4
1.  [173-182]   `bootstrap`
MATCH 5
1.  [200-213]   `bootstrap.css`
MATCH 6
1.  [231-245]   `bootstrap.font`  

\s
匹配任何类型的空格,包括换行符。
/<!--[\s\t\n]*?@require ([\s\S]+?)[\s\t\n]*?-->/gm
@require (.+?)?(?:-->|\s)
MATCH 1
1.  [71-76] `a.css`
MATCH 2
1.  [97-109]    `BOWER/jquery`
MATCH 3
1.  [130-143]   `/build/bundle`
MATCH 4
1.  [173-182]   `bootstrap`
MATCH 5
1.  [200-213]   `bootstrap.css`
MATCH 6
1.  [231-245]   `bootstrap.font`