Javascript正则表达式URL匹配

时间:2010-05-15 00:23:04

标签: javascript regex javascript-events

到目前为止,我有这个:

chrome.tabs.getSelected(null, function(tab) 
{
    var title = tab.title;
    var btn = '<a href="' + tab.url + '" onclick="save(\'' + title + '\');"> ' + title + '</a>';

    if(tab.url.match('/http:\/\/www.mydomain.com\/version.php/i')) 
    {
        document.getElementById('link').innerHTML = '<p>' + btn + '</p>';
    }
});

基本上它应匹配此域中的域:

http://www.mydomain.com/version.php?*

任何匹配的内容,即使它包含类似version.php?ver = 1等的内容

当我使用上面的代码时,它没有显示任何内容,但是当我删除if语句时,它很好,但它在其他页面上显示它不应该匹配的网址。

修改

if(tab.url.match(/http:\/\/www.mydomain.com\/version.php/i)) 
{
    document.getElementById('link').innerHTML = '<p>' + btn + '</p>';
}

甚至不能以某种方式工作......

4 个答案:

答案 0 :(得分:2)

试试这个

if(tab.url.match(/http\:\/\/www\.mydomain\.com\/version\.php/i)) 
{
    //...
}

答案 1 :(得分:1)

删除引号。 Opera DragonFly给了我:

>>> 'http://www.mydomain.com/version.php'.match(/^http:\/\/www\.mydomain.com\/version\.php/i) 
[object Array]

答案 2 :(得分:0)

您正在创建RegExp对象,但您没有将其与任何内容进行匹配。请参阅here了解如何使用它(顺便说一句,语法也是错误的,它是/ expression / modifiers或RegExp(表达式,修饰符))。

答案 3 :(得分:0)

match()应该将RegExp对象作为参数,而不是字符串。您可以从表达式周围删除单引号''以使其正常工作。为了将来参考,您还应该转义表达式中的句点.(因为它们将匹配任何单个字符),并在开头只插入^在URL的开头允许此匹配。