アドレスバーに入力された文字が検索ワードかURLか判定するにはどうすればいい? への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 winvis  (学生) 投稿日時 2009/9/24 08:41:29
返答が遅れ申し訳ありません!!
判定の処理は、あにすさんのソースコードを、使わせてもらいました
でも、いろんなやり方があるんですね~
投稿者 nihihi  (中学生) 投稿日時 2009/9/20 23:27:18
   
If アドレス.StartWith("http://") = True Then
    'URLのときの処理 
Else
    '検索ワードのときの処理 
End If
投稿者 mitchin  (社会人) 投稿日時 2009/9/10 12:00:57
あんまり厳密に判定しなくていいなら正規表現文字列はこんな感じでいいかも。
https?://\w+([-+.]\w+)*\.\w+([-.]\w+)*
投稿者 winvis  (学生) 投稿日時 2009/9/10 02:56:09
回答ありがとうございます
正規表現とは、思いつきませんでした
PHP用なのか、http://rucio.groupsite.jp/commu/ThreadDetail.aspx?ThreadId=9340と、入れても、Elseに飛ばされてしまいました
自分も正規表現について調べたいと思います
投稿者 ?-?  (その他) 投稿日時 2009/9/9 17:43:22
DNSに問い合わせて存在するドメインかどうかとか、実際に入力されたリクエストに対するレスポンスコードがエラーだったら検索ワードとして扱う、という方法を考えた私は考えが甘いです・・・
投稿者 あにす  (社会人) 投稿日時 2009/9/9 17:02:17
調べてみたのですが、厳密に判定するのは難しいようです。
正規表現である程度の精度で判定出来るようです。正規表現は全くわからないので
http://d.hatena.ne.jp/seto-san/20090123/1232679235
の正規表現をそのまま使って書いてみました。

Imports System.Text.RegularExpressions

Public Class Form1
    Dim regex As New Regex("\b(?:https?|shttp)://(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*@)?(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.)*[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.?|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(?::[0-9]*)?(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)*)?(?:\?(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?(?:#(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)?")

    Private Sub TextBox1_TextChanged(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles TextBox1.TextChanged
        If regex.IsMatch(sender.Text) Then
            sender.BackColor = Color.White
        Else
            sender.BackColor = Color.Red
        End If
    End Sub
End Class
投稿者 winvis  (学生) 投稿日時 2009/9/9 10:36:28
題名の通りなのですが、ブラウザー(webbrowser)を作っているのですが
アドレスバー(combobox)に、入力された文字がURLなのか
検索ワードなのか、判定するにはどうしたらいいですか?
どうやっていいのか全くわかりませんorz
どなたかお助けをorz