If statement 正则表达式如果不';其他的

If statement 正则表达式如果不';其他的,if-statement,If Statement,为什么下面代码中的正则表达式从来没有改变过常规应用程序中的codespli0输入字符串是动态的,但是当它改变if语句时,它就没有改变过else。为什么? //first iteration input string codespli0 = "var test = 0" //second iteration input string codespli0 = "test 2" //process var strTest = new RegExp("var"); alert(strTest);

为什么下面代码中的正则表达式从来没有改变过常规应用程序中的codespli0输入字符串是动态的,但是当它改变if语句时,它就没有改变过else。为什么?

//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 />";
}
//第一次迭代输入字符串
codespli0=“var test=0”
//第二次迭代输入字符串
codespli0=“测试2”
//过程
var strTest=新的RegExp(“var”);
警报(strTest);
如果(strTest==“/var/”){
var test=strTest.exec(codespli0);
codepara0.innerHTML+=test+“
”; }否则{ codepara0.innerHTML++=“this”+“
”; }
简化您的代码应该有助于:

var strTest = "/var/"
if( strTest == "/var/" ){
    // Always runs this.
}else{
    // Never runs this.
}
您正在设置变量,然后立即进行测试,查看是否已将其设置为该值。我甚至不知道你的目标是什么,但是的,那永远是真的。您的if语句与命令式编程中的
codespli0

没有任何关系(我假设您的代码是JavaScript,因为您没有使用任何特定语言标记问题),在程序执行到达时,
if
语句只计算一次。以这段代码为例:

if (something) {
    doSomething();
    something = false;
} else {
    doSomethingElse();
}
在这段代码中,当达到if语句时,将检查
something
的值是否为true(在大多数语言中不是0的任何值)。如果计算结果为true,将调用
doSomething()
。否则,将调用
doSomethingElse()

请注意,即使在
if
语句中
something
更改为
false
,也不会执行
else
条件,因为当对if语句求值时
something
为true

如果要多次运行同一段代码,需要将其放入函数中并调用该函数,传递不同的参数

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

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");
功能测试(codespli0){
var strTest=新的RegExp(“var”);
var test=strTest.exec(codespli0);
如果(测试){
codepara0.innerHTML+=test+“
”; }否则{ codepara0.innerHTML++=“此”+”
”; } } 测试(“var测试=0”); 测试(“测试2”);

这样,实际上您正在运行代码以测试匹配项两次,一次用于
codespli0
的每个值,因为代码在函数中,您正在为每个值调用它。

问题仍然存在。为什么正则表达式的代码不是else?我假设你的意思是,“为什么正则表达式从来没有将代码发送到else代码片段中。”答案是:因为正则表达式不在“if”中。如果这不是你的意思,那么你需要重新措辞,因为“为什么正则表达式代码不是别的?”“不是一个连贯的英语句子。我可以为函数提供多个字符串。问题是,当字符串发生变化时,if语句为什么不改变?您测试的条件是错误的。您正在检查正则表达式变量
strTest
是否等于
“var”
,因为您使用的正则表达式不会更改,所以它始终等于。您需要根据执行正则表达式的结果进行测试。oops更不用说case closed了,因为您都有有效的点。这是我的错,我只是没有将代码结构化,这里是工作代码。var strTest=new RegExp(“var”);var test=strTest.exec(codespli0);警报(strTest);如果(test){codepara0.innerHTML+=test+“
”;}或者{codepara0.innerHTML+=“this”+“
”;}如果您的问题已解决,请将其中一个提供的答案标记为已接受,以便它从未回答的问题列表中消失。