2011-03-08 3 views
1

Есть ли простая функция замены, которая изменит шаблон greasemonkey в шаблон регулярного выражения?преобразовать шаблон greasemonkey в regex

Я хочу, чтобы преобразовать 'http://www.google.com/*/index.html' в /^http://www.google.com\/\w\/index.html$/

Я хочу, чтобы иметь возможность проверить URL с greasmonkey wildchar в JavaScript

ответ

2

код, который преобразует @include/@exclude к р ехр here.

Все, что происходит, однако, что * заменяется .* и символы, как [, ( и т.д. преобразуются в \[, \(, то string отправляется new RegExp(string).

Если вы использовали Scriptish, то вы можете использовать синтаксис регулярных выражений для @include/@exclude с, например, так

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

Конечно, я, вероятно, не исчерпаны все варианты масок (ни у меня не было огромное испытание базы данных для испытаний), но вот что я придумал:

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

Использование:

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

Просто взгляните на Greasemonkey's source

+0

Pumbaa80, Так как это просто ссылка на внешний сайт, ответ может идти * пуф * перед тем, следующий человек нуждается в нем. Рассмотрите возможность копирования соответствующей части этого кода в ответ. –

+0

источник находится на Github btw =] – erikvold

+0

@BrockAdams @ErikVold какая сделка с этим действительно длинным шаблоном в этой функции? – qwertymk

Смежные вопросы