Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查字符串是否为“;是";带有正则表达式的javascript代码_Javascript_Regex - Fatal编程技术网

检查字符串是否为“;是";带有正则表达式的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 = /(:|=|{|})

对于一个非常简单的javascript模板引擎,我需要检查给定字符串是否是javascript代码(如
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;
可能同样有效。