首先看看這個寫法,判斷對不對:
var res = /\[f:(.+?)\]/.exec('[f:pixiv][t:...]');
以及這個:
var res = new RegExp('\[f:(.+?)\]').exec('[f:pixiv][t:...]');
答案是前者正確,后者錯誤。原因在于:
當使用構造函數創造正則對象時,需要常規的字符轉義規則(在前面加反斜杠
\\
)。
所以后者的正確寫法為:
var res = new RegExp(\\[f:(.+?)\\]').exec('[f:pixiv][t:...]');