2014-09-21 58 views
0

我在做一個需要我匹配URL的項目。正則表達式我很可怕。但相信結構去如下 -如何使用正則表達式在Ruby 1.8.7中匹配URL

  • 字母和符號,除了空間可重複1至任意次數,
  • 緊跟一個點0次或1次,
  • 隨後通過字母和符號,空格除外,1至多次,
  • 後跟一個點「。」。 ,
  • 隨後有效擴展名的列表(如玉米,組織​​,在(將在這裏指定的))
  • 接着是「/」 0次或1次
    • 如果爲0,然後緊接着空間
    • 如果爲1,則文字和符號,除了

我怎麼形成這個

+0

你試過了什麼? – 2014-09-21 13:13:59

+1

@AvinashRaj 這[正則表達式](http://rubular.com/r/Bqh38VDz50)我試過了。只有意識到它接受這樣的字符串。然後我意識到我可以匹配.com,.org,in和.. – 2014-09-21 13:20:02

+0

Ruby使用Perl風格的正則表達式,[url規範](http://www.w3.org/Addressing/URL/url-spec.txt )比你想象的更難以正確表達。如果你不確定,你可能會更好地使用別人爲你建立的一個像上面提出的答案。 – ShaneQful 2014-09-21 13:21:01

回答

1

正則表達式你可以試試下面的正則表達式匹配滿足上述條件的URL。

(?:https?:\/\/)?[^\W\s_]+\.?[^\W\s_]+\.(?:com|org|me)(?:\/[^\W\s_]+)? 

DEMO

1

正則表達式是不適合很好解析語法和驗證輸入。正則表達式只是用於字符串模式匹配。

使用解析器驗證輸入的語法,在你的情況下試試ruby's URI。它是1.8.7默認庫的一部分