0

いくつかの学校の短い配列から始めて、入力の値がこれらの学校のいずれかと一致するかどうかをテストします。これまでの私のコードは次のとおりです。

    var $schools = [
     'University of Tennessee-Knoxville',
     'Maryville College',
     'Cleveland State Community College',
     'East Tennessee State University'
    ];   
    var $searchBar = $('input.searchBar');
    $searchBar.keyup(function(){
         var $searchValue = $searchBar.val();
         for (var x = 0; x < $schools.length; x++) {
             var $schoolLC = $schools[x].toLowerCase();
             var $searchLC = $searchValue.toLowerCase();
             var $searchingValue = new RegExp('.*' + $searchLC + '.*');
             if ($schoolLC.match($searchingValue)) {
                 console.log($searchLC);
             }
         }
     });

しかし、$searchLC を console.log に記録しないため、明らかに何かが間違っています (私の RegExp にあると思います)。

本当にありがとう!!

4

4 に答える 4

2

これじゃないですか

if ($searchLC.match($searchingValue)) {

察するに

if ($schoolLC.match($searchingValue)) {
于 2013-02-01T16:11:04.650 に答える
1

この特定の例では、matchを使用する代わりに、indexOfを使用して、コードが次のようになるようにすることができます。

var $schools = [
 'University of Tennessee-Knoxville',
 'Maryville College',
 'Cleveland State Community College',
 'East Tennessee State University'
];   
var $searchBar = $('input.searchBar');
$searchBar.keyup(function(){
     var $searchValue = $searchBar.val();
     for (var x = 0; x < $schools.length; x++) {
         var $schoolLC = $schools[x].toLowerCase();
         var $searchLC = $searchValue.toLowerCase();
         if ($schoolLC.indexOf($searchLC) >= 0) {
             console.log($searchLC);
         }
     }
 });
于 2013-02-01T16:19:14.603 に答える
1

すべての正規表現の特殊文字をエスケープする必要があると思います:

function escapeRegExp(str) {
  return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
}

...
var $searchingValue = new RegExp('.*' + escapeRegExp($searchLC) + '.*');
...
于 2013-02-01T16:10:49.357 に答える
1

これを試してみてください:ライブデモ

for (var x = 0; x < $schools.length; x++) {
    var $schoolLC = $schools[x].toLowerCase();
    var $searchLC = $searchValue.toLowerCase();
    var $searchingValue = new RegExp('.*' + $searchLC + '.*');
    if ($schoolLC.match($searchingValue)) {
        alert($schoolLC);
    }
}
于 2013-02-01T16:16:34.037 に答える