2016-07-31 69 views
0

有人可以幫助我建立正則表達式,以確保字符串以下列之一開始?創建正則表達式來檢查域和URL

https://www.youtube.com 
https://www.youtube.be 
http://www.youtube.com 
http://www.youtube.be 
https://youtube.com 
https://youtube.be 
http://youtube.com 
http://youtube.be 
www.youtube.com 
www.youtube.be 
youtube.com 
youtube.be 

我的PHP系統,它允許人們將YouTube視頻添加到網頁上的工作中,我只需要確保該鏈接的用戶添加適當的開始,也是一個有效的URL。那麼應該足夠安全,以便在用戶輸入字符串後存儲該字符串,並在稍後查看時嵌入爲YouTube視頻。

+0

HTTP://www.regexr。 com /是一個非常好的網站,學習正則表達式並嘗試這種東西 –

回答

1

這是因爲

^(https?:\/\/)?(www\.)?youtube\.(be|com) 

的解釋點點簡單:

  • ^ - 字符串的開始
  • https? - http可選s
  • :\/\/ - ://
  • (www\.)? - 可選www.
  • youtube\. - youtube.
  • (be|com) - becom

如果你也想匹配youtu.be,使用此:

^(https?:\/\/)?(www\.)?(youtube\.(be|com)|youtu\.be) 
+0

這是否檢查http和https? –

+0

@彼得它。 – nicael

+0

謝謝。稍後再回到工作崗位並回來報告。 –

0
((?:https?:\/\/)?(?:www.)?youtu(?:\.?be)?\.(?:com|be)) 

包括:

https://www.youtube.com 
https://www.youtube.be 
http://www.youtube.com 
http://www.youtube.be 
https://youtube.com 
https://youtube.be 
http://youtube.com 
http://youtube.be 
www.youtube.com 
www.youtube.be 
youtube.com 
youtube.be 
youtu.be 
www.youtu.be 
http://www.youtu.be 
https://www.youtu.be 
http://youtu.be 
https://youtu.be 

PHP:

$re = "/((?:https?:\\/\\/)?(?:www.)?youtu(?:\\.?be)?\\.(?:com|be))/"; 
$str = "https://www.youtube.com\nhttps://www.youtube.be\nhttp://www.youtube.com\nhttp://www.youtube.be\nhttps://youtube.com\nhttps://youtube.be\nhttp://youtube.com\nhttp://youtube.be\nwww.youtube.com\nwww.youtube.be\nyoutube.com\nyoutube.be\nyoutu.be\nwww.youtu.be\nhttp://www.youtu.be\nhttps://www.youtu.be\nhttp://youtu.be\nhttps://youtu.be\n\n\nbsadf.fds\n\nyoutube\.(be|com)"; 

preg_match_all($re, $str, $matches); 

UPD: 是,@nicael是正確的,但我就這麼改變:

((?:https?:\/\/)?(?:www\.)?(?:youtube\.(?:be|com)|youtu\.be)) 
+0

OP沒有真正要求'youtu.be'。儘管如此,您仍然錯誤地實施了它。例如,匹配'youtu.com'。 – nicael