0

このフィドルの何が問題なのですか。

http://jsfiddle.net/RPdx4/

 function getMatches(data,city){
             var matchArr = [];
             var pattern = new RegExp("\\b("+ city +")","gi");
        for (var i in data){        
                 var searchStr = data[i].searchstr;
                 if(pattern.test(searchStr)){
                    matchArr.push(data[i]);
                }
            }
            return matchArr;
        }

最初のアドレス オブジェクトと最後のアドレス オブジェクトは一致しますが、2 番目のアドレス オブジェクトは一致しません。しかし、2 番目のアドレス オブジェクトにも同じ単語があります。理由はありますか?

4

1 に答える 1

1

使うだけ.indexOf()

 function getMatches(data,city){
        var matchArr = [];
        for (var i in data){        
                 var searchStr = data[i].searchstr;
                 var index = searchStr.indexOf(city);
                if(index!==-1) {
                    matchArr.push(data[i]);
                }
            }
            return matchArr;
        }

var arr = getMatches(x,'Dar es');
alert("arr: " + arr.length);

デモ: http://jsfiddle.net/RPdx4/4/


OK、正規表現だけ

var pattern = RegExp('\\b' + city + '\\b')

また

var pattern = RegExp("\\b("+ city +")")

デモ: http://jsfiddle.net/RPdx4/5/

于 2013-11-13T08:52:18.247 に答える