【问题标题】:My Regular Expression will not Match Conditional Statement我的正则表达式与条件语句不匹配
【发布时间】:2011-04-26 23:33:51
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery regex conditional


    【解决方案1】:

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

    试试

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        你试过了吗:

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

        【讨论】:

        • @jAndy 我相信 mylink1 等是占位符
        猜你喜欢
        • 1970-01-01
        • 2013-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-12
        • 2016-01-16
        相关资源
        最近更新 更多