正则表达式,如果不是

时间:2013-07-26 12:46:53

标签: if-statement

为什么以下代码中的正则表达式不会在常规应用程序中使用codespli0输入字符串是动态的,但是当它更改if语句时则不然。为什么呢?

//first iteration input string
codespli0 = "var test = 0"

//second iteration input string
codespli0 = "test 2"


//process
var strTest = new RegExp("var");
alert(strTest);
if(strTest=="/var/"){
var test = strTest.exec(codespli0);
codepara0.innerHTML+=test+"<br />";
}else{
codepara0.innerHTML+="this"+"<br />";
}

2 个答案:

答案 0 :(得分:0)

简化代码应该有帮助:

var strTest = "/var/"
if( strTest == "/var/" ){
    // Always runs this.
}else{
    // Never runs this.
}

您正在设置变量,然后立即进行测试以查看它是否已设置为该值。我甚至不确定你的目标是什么,但是,那将永远是真的。你的if语句与codespli0没有任何关系。

答案 1 :(得分:0)

在命令式编程中(我假设您的代码是JavaScript,因为您没有使用任何特定语言标记问题),{em>一次评估if语句,并且<强>一次,在程序执行到达时。以此代码为例:

if (something) {
    doSomething();
    something = false;
} else {
    doSomethingElse();
}

在此代码中,当达到if语句时,将检查something的值以查看它是否为真(在大多数语言中不是0的任何内容)。如果计算结果为true,则将调用doSomething()。否则,将调用doSomethingElse()

请注意,即使something语句中false更改为ifelse条件也不会被执行,因为{{当评估if语句时,1}}为真

如果你想多次运行同一段代码,你需要把它放在函数中并调用函数,传递不同的参数。

在您的代码中,您可能希望执行以下操作:

something

这样,您实际上是在运行代码来测试匹配两次,每次为function test (codespli0) { var strTest = new RegExp("var"); var test = strTest.exec(codespli0); if (test) { codepara0.innerHTML += test + "<br />"; } else { codepara0.innerHTML += "this" + "<br />"; } } test("var test = 0"); test("test 2"); 的值一次,因为代码在函数中并且您正在调用每个值都有。