JavaScript 正则表达式匹配 URL。

7

我目前有这个:

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.example.com\/version.php/i')) 
    {
        document.getElementById('link').innerHTML = '<p>' + btn + '</p>';
    }
});

基本上它应该与以下域名匹配:
http://www.example.com/version.php?*

任何匹配的内容,即使包括version.php?ver=1等内容

当我使用上述代码时,它没有显示任何内容,但当我删除if语句时,它可以正常显示,但会在其他页面上显示,而不仅仅是匹配的URL。

编辑:

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

总是无法正常工作...

4个回答

7

试试这个:

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

1

去掉引号。Opera DragonFly 给出的结果如下:

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

0
你正在创建 RegExp 对象,但是你没有将其与任何内容匹配。请参见这里了解如何使用它(顺便说一句,语法也是错误的,应该是 /expression/modifiers 或 RegExp(expression, modifiers))。

0

match() 应该接受一个 RegExp 对象作为参数,而不是一个字符串。你可以尝试去掉表达式周围的单引号''来使其工作。以后参考资料,你应该在表达式中转义句点.(因为它们将匹配任何单个字符),并在开头插入^,只允许此匹配在URL的开头。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接