【问题标题】:convert greasemonkey wildcard to regex将greasemonkey通配符转换为正则表达式
【发布时间】:2011-03-08 18:40:29
【问题描述】:

是否有一个简单的替换函数可以将greasemonkey通配符更改为正则表达式模式?

我想将'http://www.google.com/*/index.html' 转换为/^http://www.google.com\/\w\/index.html$/

我希望能够在 javascript 中使用 greasmonkey 通配符测试 url

【问题讨论】:

    标签: javascript regex greasemonkey wildcard


    【解决方案1】:

    当然,我可能还没有用尽通配符的所有选项(也没有用于试验的庞大测试数据库),但这是我想出的:

    String.prototype.toRegExp = function()
    {
        var result = this.replace(/([\/\(\)\[\]\.\?])/g,'\\$1');
        result = result.replace('*','.*');
        return new RegExp(result);
    }
    

    用法:

    var re = "http://www.google.com/*".toRegExp();
    

    【讨论】:

      【解决方案2】:

      @include/@exclude 转换为正则表达式的代码是here

      所发生的只是*.* 替换,[( 等字符被转换为\[\(,然后string 被发送到@ 987654331@.

      如果你使用了Scriptish,那么你可以对@include/@excludes 使用正则表达式语法,就像这样

      // @include /^http:\/\/www.google.com\/\w\/index.html$/i
      

      【讨论】:

        【解决方案3】:

        【讨论】:

        • Pumbaa80,由于这只是一个外部网站的链接,答案可能会在下一个人需要它之前 poof。考虑将该代码的相关部分复制到您的答案中。
        • 源码在 Github btw =]
        • @BrockAdams @ErikVold 那个函数中那个很长的模式是怎么回事?
        • @qwertymk,你的意思是“tld”的东西吗?如果是这样,那是因为 GM 允许您使用像 @include http://google.tld/ 这样的东西,其中“tld”将匹配任何“顶级域”。这对于在美国使用 .com 而在德国使用 .de 等的网站上的脚本很有用。
        猜你喜欢
        • 1970-01-01
        • 2012-11-28
        • 2012-09-23
        • 1970-01-01
        • 2014-05-19
        • 1970-01-01
        • 2019-06-23
        • 2011-10-02
        • 2016-04-02
        相关资源
        最近更新 更多