2017-10-03 5 views
0

Comment puis-je écrire une expression régulière pour correspondre à des URL contenant des emojis? L'expression rationnelle doit correspondre à des URL alphanumériques ordinaires ainsi que les URL contenant emojis au nom de domaine, le chemin et/ou de paramètres tels que:Comment faire correspondre une URL contenant des emojis en utilisant une regex?

http: //.to

http://www ..pour/

http: //.to/I❤️coding?ref=

La plupart des applications web d'aujourd'hui (y compris, mais sans s'y limiter, les réseaux sociaux, les communautés en ligne, etc.) détectent automatiquement les URL publiées par les utilisateurs sous forme de texte et les convertissent en liens hypertexte . Néanmoins, presque aucun d'entre eux (StackOverflow inclus) ne correspond correctement aux URL qui incluent des emojis tels que les exemples rapportés ci-dessus, qui sont valides, fonctionnent à 100% et qui deviennent de plus en plus populaires. Pour toutes ces raisons, la question actuelle est très pertinente en termes de mise en œuvre de code d'expressions régulières plus modernes d'URL en utilisant n'importe quel langage de programmation.

+0

https://en.wikipedia.org/wiki/Regular_expression#Unicode ... –

+0

Vous donnez l'impression que c'est une mauvaise chose. Ce n'est pas. Les emojis sont des cancers et les URL doivent toujours être visibles en clair. – DanteTheSmith

+0

@DanteTheSmith c'est juste une question de temps. Les emojis dans les URL sont déjà visibles dans certains navigateurs modernes (consultez Safari et Safari Mobile). Certaines personnes ont rejeté ma question mais je pense que c'est très pertinent et nous ne devrions pas être aussi "radicaux" sur ce sujet. Que les développeurs aiment ou non, les URL contenant des emojis présentent un certain nombre d'avantages (par exemple, des campagnes de publicité et de marketing) et nous en verrons de plus en plus à l'avenir, nous devons donc nous en occuper. – Albz

Répondre

2

Cette expression régulière correspond à des URL alphanumériques ordinaires ainsi que les URL contenant des emoji au nom de domaine, le chemin et/ou paramètres:

https?:\/\/(www\.)?[-a-zA-Z0-9\u1F60-\[email protected]:%._\+~#=]{2,256}\.[a-z]{2,256}\b([-a-zA-Z0-9\u1F60-\[email protected]:%_\+.~#?&//=]*) 

Essayes ici: https://regexr.com/3gsl9

Notez que la gamme de unicode Les caractères qui incluent emojis (ie \ uXXXX- \ uXXXX) devront peut-être être mis à jour à l'avenir quand de nouveaux emojis seront ajoutés.

0

http: // \ S +

Où \ S + capture tous les non blancs

L'astuce est de garder la regex d'être trop gourmand, vous pouvez avoir besoin d'informations supplémentaires pour aider à déterminer la fin de l'URL , est-ce un espace ou encapsulé d'une certaine façon?

0

Regex pour vérifier l'URL contient Alphabets

String alphabets= "(.*[a-zA-Z].*)"; 

Regex pour vérifier l'URL contient les numéros

String numbers= "(.*[0-9].*)"; 

Regex pour vérifier l'URL contient des caractères spéciaux

String special = "(.*[!,@,$,%,^,&,*,#,~,`,{,},%,|,(,),-,_,=,+,[,],;,:,',\",,,<,.,>,/,?].*$)"; 

Regex pour vérifier l'URL contient alphanumérique et emojis

String emo="^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&()-*/!+=])(?=\\S+$).{size,}$"; 

Ajustez la taille et changez les caractères spéciaux selon votre besoin.