2011-01-21 3 views
1

私はこれを自分で行う前に、ここで質問して迅速な解決策があるかどうかを確認すると思いました。Google Chromeのような "オムニバ"を実装する...クエリやURLを決定する方法が必要です

Chromeのオムニバのヒストリルックアップ、オートコンプリートなどの優れた機能は必要ありません。文字列が有効なURL(有効なTLDとスキーム/プロトコル)またはIPアドレス(IPV4とIPV6)のように見える場合は、を検出する必要があります。

クロムのコードリポジトリを検索する方法がわかりません。あなたが私のためにそれが受け入れ可能な答え(あなたがjavascriptに移植すればボーナスポイント!

私はどの言語が[よく、OokまたはLOLCODE]であるか気にしないので、言語にとらわれないタグが付いています。 Javascriptは最終的な実装になります。

答えて

4

RFC2396 - Uniform Resource Identifiers (URI): Generic Syntaxで提供正規表現は(付録Bを参照)があります:

次の行が破壊ダウンURI
参照をその成分にのための正規表現 です。上述した第2ライン で

^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 
    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かどうか、またはそれが検索かどうかをチェックしているだけです。

+0

cool。追加する必要があるのは、$ 2の有効なプロトコルと$ 4の有効なtldのチェックだけです。今すぐJSに移植してください。 –

+0

"Port"は私に、http://example.com:9000/page.phpのようなURLで動作することを確認するユニットテストを行います。 – Incognito

+0

ああ、ありがとう。それも忘れてしまった。 –

関連する問題