【问题标题】:Javascript regex URL matchingJavascript 正则表达式 URL 匹配
【发布时间】:2011-02-19 18:31:08
【问题描述】:

到目前为止我有这个:

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 语句时,它很好,但它显示在其他页面上,它不应该 only 在匹配的网址。

编辑:

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

甚至无法以某种方式工作......

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    试试这个:

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

    【讨论】:

      【解决方案2】:

      去掉引号。 Opera DargonFly 给了我:

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

      【讨论】:

        【解决方案3】:

        您正在创建 RegExp 对象,但您没有将其与任何内容进行匹配。使用方法见here(顺便说一句,语法也是错误的,要么是/expression/modifiers要么是RegExp(expression, modifiers))。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2021-08-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-11-29
            • 2012-09-22
            • 1970-01-01
            相关资源
            最近更新 更多