检查字符串是否为“;是";带有正则表达式的javascript代码
对于一个非常简单的javascript模板引擎,我需要检查给定字符串是否是javascript代码(如检查字符串是否为“;是";带有正则表达式的javascript代码,javascript,regex,Javascript,Regex,对于一个非常简单的javascript模板引擎,我需要检查给定字符串是否是javascript代码(如if else,For loops或while loops)。因此,我使用这个非常简单的正则表达式/(:|=|{})/g()。虽然这个正则表达式几乎可以在任何时候工作,但在某些情况下,当我在循环中使用它时,它会以某种方式失败: // Very simple regex to check if string "is" javascript code var regFunc = /(:|=|{|})
if else
,For loops
或while loops
)。因此,我使用这个非常简单的正则表达式/(:|=|{})/g
()。虽然这个正则表达式几乎可以在任何时候工作,但在某些情况下,当我在循环中使用它时,它会以某种方式失败:
// 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 ] )
);
}
//检查字符串是否为javascript代码的非常简单的正则表达式
var regFunc=/(:|=|{|})+/g;
//用于测试:一个简单的javascript数组
var testArray=[
//预期值:false,is:false
'字符串',
//期望值:true,is:true
对于(var i=0;iFrom
与exec(或与之结合使用)一样,test被多次调用
在同一个全局正则表达式上,实例将前进超过
上一场比赛
这意味着您每次测试字符串时都必须重新初始化regexp对象。我不明白。/[:={}]+/
应该如何测试字符串是否为javascript?例如,它匹配:
,这肯定不是javascript。是否要告诉我们更多关于实际问题的信息?@georg这就是我写“in”的原因括号中。我知道这个正则表达式没有检查有效的javascript。我不确定你说的“重新初始化”是什么意思。我尝试删除全局标志,似乎效果很好。要么删除全局标志,要么执行regFunc=/(:|=|{124;})+/g、
在每次测试之前。在每次测试之前使用reg.lastIndex=0;
可能同样有效。