對於一個非常簡單的JavaScript模板引擎,我需要檢查是否一個給定的字符串「爲」 javascript代碼(如if-else
,for-loops
或while-loops
)。因此我使用這個非常簡單的正則表達式/(:|=|{|})/g
("tested" here)。而此正則表達式的作品,幾乎任何時候它以某種方式在某些情況下出現故障時,我使用它在一個循環:檢查字符串「是」 javascript代碼與正則表達式
// Very simple regex to check if string "is" javascript code
var regFunc = /(:|=|{|})+/g;
// For testing: a simple javascript array
var testArray = [
// expected: false, is: false
'string',
// expected: true, is: true
'for(var i=0; i<total;i++) {',
// expected: true, is: false (??)
'}',
// expected: true, is: true
'}'
];
for(var i = 0; i < testArray.length; i++) {
console.log(
testArray[ i ],
regFunc.test(testArray[ i ])
);
}
您可以檢查JSBin控制檯輸出。所以我想知道爲什麼第一個「{」輸出false
和第二個輸出true
(這是我對兩者的期望)?
我不明白。 '/ [:= {}] + /'應該如何測試字符串是否是javascript?例如它匹配絕對不是javascript的'::::'。謹慎告訴我們關於實際問題的更多信息? – georg 2014-10-07 14:26:17
@georg這就是爲什麼我在括號中寫入「in」。我知道這個正則表達式不檢查有效的JavaScript。 – Daniel 2014-10-07 14:34:20