5

私は次の3つの文字列を持っています...

a = "The URL is www.google.com"
b = "The URL is google.com"
c = "The URL is http://www.google.com"

Ruby の URI 抽出メソッドは、http 部分が含まれているため、3 番目の文字列の URL のみを返します。

URI.extract(a)
=> []

URI.extract(b)
=> []

URI.extract(c)
=> ["http://www.google.com"]

3 つのインスタンスすべてで URL を検出して返すメソッドを作成するにはどうすればよいですか?

4

5 に答える 5

1

あなたはスクレノワールの答えに満足しているようです。Sucrenoir の答えの本質は、少なくとも 1 つのピリオドが含まれていると仮定して URL を識別することです。その場合、Sucrenoir の正規表現は次のように簡略化できます (同等ではありませんが、ほとんどの場合)。

string[/\S+\.\S+/]
于 2013-07-05T13:10:32.793 に答える
0

これは私が少し前に使用したもので、うまくいけば役に立ちます

validates :url, :format =>
        { :with => URI::regexp(%w(http https)), :message => "Not Valid URL" }

その検証を通過します(データベースを使用していると思います)

于 2013-07-05T13:17:33.080 に答える