簡體   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