对于一个非常简单的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