繁体   English   中英

Javascript正则表达式:找到第一个'use strict'

[英]Javascript regex: find the first 'use strict'

我想确定文件是以零或多行单行注释(//样式)开头,然后是“use strict”。

这是我的尝试:

var regex = new RegExp("(\/\/.*$)*\"use strict\";", 'm');
var codeblock = 
`
//hi
//there
"use strict";
`;

let match = regex.exec(codeblock);
console.log(match.index);

我希望match.index为0.然而,它实际上返回14,这意味着它不能识别我的评论。 我怀疑我没有正确使用重复模式()*,但我不确定我应该使用什么?

关键是您的(\\/\\/.*\\r?\\n)*部分与评论不匹配,因为您没有使用换行符,只能用$断言它们的存在。 因此,组0值未定义 (尝试打印match[1] )并且匹配位于位置14,即"use strict"

$替换$ \\r?\\n并确保在测试字符串的开头没有换行符,您将得到0

 var regex = /(\\/\\/.*\\r?\\n)*\\"use strict\\";/m; var codeblock = `//hi //there "use strict";`; let match = regex.exec(codeblock); console.log(match.index); 

我还建议使用正则表达式文字符号 /(\\/\\/.*\\r?\\n)*\\"use strict\\";/m而不是RegExp构造函数表示法,因为您的模式是静态的(没有变量用于构建正则表达式)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM