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