javascript:匹配字符串中的子字符串出错

时间:2013-04-13 08:26:26

标签: javascript

以下代码正常

var srch_str = "snow"
var str = "snow Showers Late"
alert((new RegExp(srch_str)).test(str))   //true

但这不是,我不明白为什么?

var weather_status = ['rain', 'cloudy', "snow", 'wind', 'thunderstorms' ]
    function getStatus(str){

        for(srch_str in weather_status){


            var bool = (new RegExp(srch_str)).test(str)
            if(bool){
                str = srch_str
                Ti.API.info("if ......")
                break;
            }
            else{
                Ti.API.info(" else ----------")
            }

        }//for

        return str
    }

输出:else ------------(5次)

致电getStatus("snow Showers Late")

1 个答案:

答案 0 :(得分:4)

当您使用for(srch_str in weather_status)循环时,srch_str是数组的索引,而不是该索引处的元素。将正则表达式行更改为:

var bool = (new RegExp(weather_status[srch_str])).test(str);

演示:http://jsfiddle.net/q688j/

(调试提示:console.log( srch_str )会立即指出问题。)