我的正则表达式不符合条件语句

时间:2010-10-18 14:17:25

标签: javascript jquery regex conditional

有人可以告诉我为什么,即使我的警报显示我的正则表达式字符串匹配,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 *
        };
    });
});

3 个答案:

答案 0 :(得分:4)

.match()的返回值不是字符串,而是字符串数组。当数组恰好包含相同的值时,它们不会相等。

尝试

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

也可能还要验证返回值也不为空:

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

答案 1 :(得分:2)

由于[1,2,3] == [1,2,3]失败的原因,您的if语句失败。您需要比较每个列表的内容,或者更简单地比较myWindow [0] == href [0]。

答案 2 :(得分:0)

你试过了吗?

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