Реализация «омнибара», такого как Google Chrome, ... нужен метод для определения запроса или URL - PullRequest
1 голос
/ 21 января 2011

Прежде чем сделать это самостоятельно, я подумал, что я должен спросить здесь и посмотреть, есть ли какие-нибудь быстрые решения.

Мне не нужны просмотр истории, автозаполнение или другие необычные функции омнибара в Chrome; Мне просто нужно определить, выглядит ли строка как действительный URL-адрес (с действительными TLD и схемой / протоколом) или IP-адрес (IPV4 и IPV6).

Я не уверен, как искать в хранилище кода chrome взгляд на то, как они это делают. Так что, если вы найдете это для меня, это будет приемлемым ответом (бонусные баллы, если вы перенесете его на javascript!).

Помечен как независимый от языка, потому что мне все равно, на каком языке это написано [ну, пожалуйста, Ook или LOLCODE ]) Javascript будет конечной реализацией.

1 Ответ

4 голосов
/ 21 января 2011

Существует регулярное выражение в RFC2396 - Унифицированные идентификаторы ресурса (URI): общий синтаксис (см. Приложение B):

Следующая строка является регулярным выражением для взломавниз ссылки URI
на его компоненты.

  ^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?
   12            3  4          5       6  7        8 9

Числа во второй строке выше предназначены только для удобства чтения;они указывают контрольные точки для каждого подвыражения (т. е. каждая
парная скобка).Мы называем значение для подвыражения как $.Например, сопоставление приведенного выше выражения с

  http://www.ics.uci.edu/pub/ietf/uri/#Related

приводит к следующим совпадениям подвыражения:

  $1 = http:
  $2 = http
  $3 = //www.ics.uci.edu
  $4 = www.ics.uci.edu
  $5 = /pub/ietf/uri/
  $6 = <undefined>
  $7 = <undefined>
  $8 = #Related
  $9 = Related

Я не вижу причины не использовать регулярное выражение в этом случаеособенно если вы просто проверяете, является ли это URI или поиском.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...