对于一个非常简单的JavaScript模板引擎我需要检查一个给定的字符串是否“是” javascript代码(如if-else
,for-loops
或while-loops
)。因此,我使用的是这个非常简单的正则表达式/(:|=|{|})/g
(此处为“ tested”)。尽管此正则表达式几乎可以在任何时间工作,但在某些情况下在循环中使用它时却会以某种方式失败:
// 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
(这是我对两者的期望)?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句