API JavaScript JavaScript использует match patterns в разных местах. В расширении Chrome существует ли способ вручную вызывать любые функции, которые использует Google для проверки того, сохраняется ли URL-адрес по заданному шаблону соответствия? У меня есть куча URL-адресов, которые я бы хотел проверить.Вызовите API «совпадений» Google?
ответ
Нет, нет. Однако реплицировать его с помощью регулярных выражений не так сложно.
Вот реализация. Он проверяет нормальные ограничения на шаблоны соответствия, но не проверяет правильность хоста шаблона/тестового URL-узла.
function patternToRegExp(pattern){
if(pattern == "<all_urls>") return /^(?:http|https|file|ftp):\/\/.*/;
var split = /^(\*|http|https|file|ftp):\/\/(.*)$/.exec(pattern);
if(!split) throw Error("Invalid schema in " + pattern);
var schema = split[1];
var fullpath = split[2];
var split = /^([^\/]*)\/(.*)$/.exec(fullpath);
if(!split) throw Error("No path specified in " + pattern);
var host = split[1];
var path = split[2];
// File
if(schema == "file" && host != "")
throw Error("Non-empty host for file schema in " + pattern);
if(schema != "file" && host == "")
throw Error("No host specified in " + pattern);
if(!(/^(\*|\*\.[^*]+|[^*]*)$/.exec(host)))
throw Error("Illegal wildcard in host in " + pattern);
var reString = "^";
reString += (schema == "*") ? "https*" : schema;
reString += ":\\/\\/";
// Not overly concerned with intricacies
// of domain name restrictions and IDN
// as we're not testing domain validity
reString += host.replace(/\*\.?/, "[^\\/]*");
reString += "(:\\d+)?";
reString += "\\/";
reString += path.replace("*", ".*");
reString += "$";
return RegExp(reString);
}
// Usage example
// Precompile the expression for performance reasons
var re = patternToRegExp("*://*.example.com/*.css");
// Test against it
re.test("http://example.com/"); // false
re.test("https://example.com/css/example.css"); // true
re.test("http://www.example.com/test.css"); // true
Одно дополнение: реализация google соответствует всем портам (не позволяет указать). Поэтому, если вам нужно иметь дело с нестандартными портами, вам нужно добавить 'reString + =" (: \\ d +)? ";' Прямо после 'reString + = host.replace (/\*\.?/," [^ \\ /] * ");' – Luke
@ Luke Вперед и отредактируйте это. – Xan
- 1. Вызовите URL-адрес API финансов Google
- 2. Вызовите API диаграммы Google из таблицы стилей XSLT
- 3. Вызовите локальный API от AWS
- 4. Вызовите API YouTube AS3 от AS2
- 5. Dota 2 api количество совпадений
- 6. Вызовите API при загрузке xib в iOS?
- 7. ios google api issue
- 8. Вызовите SharePoint онлайн REST API из azure API
- 9. API Google Earth API API Google Earth
- 10. Нет совпадений маршрутов DELETE Sessions Api
- 11. Вложенный API: ActionController :: UrlGenerationError - Нет совпадений маршрутов
- 12. Нет совпадений маршрутов [GET] "/ api/v1/users"
- 13. Угловые - Rails Нет совпадений маршрутов api/versioning
- 14. API-интерфейс Foursquare не находит очевидных совпадений
- 15. Facebook Graph API - Почему нет совпадений?
- 16. Вызовите идентификатор места в Google Maps при автозаполнении адреса
- 17. Отражение, вызовите
- 18. Поиск строки для совпадений
- 19. Google API API API js
- 20. Вызовите функцию маршрутного обработчика?
- 21. API API Google Feed
- 22. API Google Directions API
- 23. API API Карт Google
- 24. Google API API nodejs
- 25. API Google Form API?
- 26. API Google Mirror API
- 27. API Google Chart API
- 28. API API Google Адресов
- 29. google api + node.js + google-api-nodejs-client
- 30. API Google google API - прослушиватель маркеров unocus
@RobW Упс, не заметил, что вы закрыли вопрос. Теперь у нас есть другая реализация с нуля. – Xan