2017-06-28 1 views
1

Je voulais valider le url collé par l'utilisateur pour Youtube & VimeoRegex pour url Youtube et Vimoe

Par exemple:

m.youtube.com, youtu.be, youtube.com, vimeo.com 

voulait aussi extraire le video id's d'eux

Mon code:

if (link.contains("youtu")) { 
    String youtubeRegex = "^(http(s)??\\:\\/\\/)?((www\\.)|(m\\.))?((youtube\\.com\\/watch\\?v=)|(youtu.be\\/))([a-zA-Z0-9\\-_])+"; 
    Pattern pattern = Pattern.compile(youtubeRegex); 
    Matcher matcher = pattern.matcher(link); 
    if (matcher.find()) { 
     isValid = true; 
    } else { 
     isValid = false; 
    } 
} else if (link.contains("vimeo")) { 
    String vimeoRegex = "^https:\\/\\/?vimeo\\.com\\/(clip\\:)?(\\d+).*$"; 
    Pattern pattern = Pattern.compile(vimeoRegex); 
    Matcher matcher = pattern.matcher(link); 
    if (matcher.find()) { 
     isValid = true; 
    } else { 
     isValid = false; 
    } 
} 

Ce regex ne fonctionne pas properly.It accepte même sans lien https ot http

+0

Votre première regex entoure la partie http dans un groupe de capture '()' suivi d'un '?', Ce qui en fait en option. Donc, si vous ne voulez pas ceux sans le protocole, je suggère d'enlever ce '?' – LukStorms

Répondre

1

essayer mon extrait, ici url youtube sera validate. si elle est valide, elle renverra l'identifiant youtube sinon il est indiqué, url invalide.

De même, il vérifiera que l'URL vimeo est valide ou non. (Je ne sais pas comment id d'URL de vimeo ressemble un)

Espérons que cela fonctionnera. et je l'ai fait en utilisant javascript vous pouvez exécuter et essayer l'extrait.

type_1 = "https://www.youtube.com/watch?v=5AaCz_2cZvQ" 
 
type_2 = "youtu.be/12312/" 
 
type_3 = "youtube.com" 
 
type_4 = "vimeo.co" 
 
get_utube_id_regex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/ 
 
if(get_utube_id_regex.exec(type_1)) { 
 
    console.log("Youtube Video ID type-1 :", get_utube_id_regex.exec(type_1)[2]) 
 
} 
 
else { 
 
    console.log("invalid Youtube URL in type 1") 
 
} 
 
if(get_utube_id_regex.exec(type_2)) { 
 
    console.log("Youtube Video ID type-2 :", get_utube_id_regex.exec(type_2)[2]) 
 
} 
 
else { 
 
    console.log("invalid Youtube URL in type 2") 
 
} 
 
if(get_utube_id_regex.exec(type_3)) { 
 
    console.log("Youtube Video ID type-3 :", get_utube_id_regex.exec(type_3)[2]) 
 
} 
 
else { 
 
    console.log("invalid Youtube URL in type 3") 
 
} 
 
if(/vimeo.com/.exec(type_4)) { 
 
    console.log(/vimeo.com/.exec(type_4)) 
 
} 
 
else { 
 
    console.log("Invalid Vimeo URL in type 4") 
 
}

+0

Je ne peux pas voir type_2 & type_3 vérifié pour l'extraction de l'ID vidéo? –

+0

J'ai mentionné divers formats youtube. Si vous voulez, vous pouvez l'essayer. sinon l'éditera. –

+0

Votre code fonctionne-t-il pour Android? . parce que je ne peux pas l'utiliser. –