2010-10-18 2 views
2

Может ли кто-нибудь сказать мне, почему, даже когда мое предупреждение показывает, что мои строки регулярных выражений совпадают, оператор if не запускается? У меня есть пример кода ниже. Заранее спасибо.Мое регулярное выражение не будет соответствовать условному утверждению

$(document).ready(function() { 
    $('div#primaryNavigation').find('a').each(function() { 
     var pattern = /my-link1|my-link2|my-link3|my-link4/; 
     var myWindow = window.location.pathname.match(pattern); 
     var href = $(this).attr('href').match(pattern); 
     alert('Show link and href until match: ' + myWindow + ' ' + href); 
     if (myWindow == href) { 
      //* Do Something * 
     }; 
    }); 
}); 

ответ

0

Вы пробовали:

var pattern =/(my-link1|my-link2|my-link3|my-link4)/; 
+0

Что относительно '/ my-link [1-4] /' – jAndy

+2

@jAndy Я считаю, что mylink1 и т. Д. Являются заполнителями – Amarghosh

4

Возвращаемое значение .match() не является строкой, это массив строк. Массивы не сравниваются как равные, когда они содержат одни и те же значения.

Попробуйте

if (myWindow[0] == href[0]) { ... } 

Вероятно, следует также проверить, что возвращаемые значения не нуль тоже:

if (myWindow && href && myWindow[0] === href[0]) { ... } 
+0

Это сработало ... Спасибо за вашу помощь! – Brent

2

Ваше заявление, если не удается по той же причине [1,2,3] == [1,2,3] терпит неудачу. Вам нужно сравнить содержимое каждого списка или просто сравнить myWindow [0] == href [0].

Смежные вопросы