2016-07-31 11 views
0

Kann mir bitte jemand helfen, Regex zu erstellen, um sicherzustellen, dass eine Zeichenfolge mit einem der folgenden beginnt?Regex erstellen, um Domäne und URL zu überprüfen

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 

ich arbeite auf PHP-System in den Menschen fügen Sie ein YouTube-Video zu einer Webseite ermöglicht es, ich brauche nur sicherstellen, dass der Link Benutzer hinzufügen beginnt in geeigneter Weise und ist auch eine gültige URL. Das sollte dann sicher genug sein, dass die Zeichenfolge gespeichert wird, nachdem der Benutzer sie eingegeben hat, und auch als YouTube-Video eingebettet, wenn sie später angezeigt wird.

+0

http: //www.regexr. com/ist eine sehr gut gemachte Seite, um Regex zu lernen und diese Art von Dingen auszuprobieren –

Antwort

1

, die als

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

Ein wenig Erklärung:

  • ^ - Anfang des Strings
  • https? - http mit optionalen s
  • :\/\/-://
  • (www\.)? - optional www.
  • youtube\. - youtube.
  • (be|com)-be oder com

Wenn Sie auch youtu.be entsprechen, verwenden Sie diese:

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

Ist das für http und https überprüfen? –

+0

@Peter es tut. – nicael

+0

Danke. Wird später getestet, wenn Sie wieder im Büro sind und melden sich zurück. –

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

Eingeschlossen sind:

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: Ja, @nicael ist richtig, aber ich würde so ändern:

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

OP hat nicht wirklich nach "youtu.be" gefragt. Sie haben es trotzdem falsch implementiert. Entspricht beispielsweise 'youtu.com'. – nicael

Verwandte Themen