Dans une application iPhone que je développe, il existe un paramètre dans lequel vous pouvez entrer une URL, en raison de sa forme et de sa fonction, cette URL doit être validée en ligne et hors ligne.
Jusqu'à présent, je n'ai pas été en mesure de trouver une méthode pour valider l'url, donc la question est;
Comment valider une entrée URL sur l'iPhone (Objective-C) en ligne et hors ligne?
Réponses:
Grâce à cet article , vous pouvez éviter d'utiliser RegexKit. Voici ma solution (fonctionne pour le développement iphone avec iOS> 3.0):
Si vous souhaitez vérifier dans Swift ma solution ci-dessous:
la source
((http|https)://)?((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"
.Il devrait rendre http: // ou https: // optionnel.Pourquoi ne pas simplement compter sur
Foundation.framework
?Cela fait le travail et ne nécessite pas
RegexKit
:Selon la documentation Apple:
la source
http://www.aol.comhttp://www.nytimes.com
réussit ce test.NSURL
ne renvoie pas nil lorsque je passe une chaîne de @ "# @ # @ $ ##% $ # $ #", ou @ "tp: / fdfdfsfdsf". Cette méthode sera donc inutile pour vérifier les URL HTTP valides, etc.Au lieu d'écrire vos propres expressions régulières, comptez sur celles d'Apple. J'utilise une catégorie sur
NSString
qui utiliseNSDataDetector
pour tester la présence d'un lien dans une chaîne. Si la plage du lien trouvé parNSDataDetector
est égale à la longueur de la chaîne entière, il s'agit d'une URL valide.la source
Ma solution avec Swift :
Pour le test:
Résultats:
la source
utilisez ceci-
la source
www.google.com/+gplusname
J'ai résolu le problème en utilisant RegexKit et j'ai créé une expression régulière rapide pour valider une URL;
Ensuite, je vérifie si matchedString est égal à subjectString et si tel est le cas, l'url est valide :)
Corrigez-moi si mon regex est fausse;)
la source
Curieusement, je n'ai pas vraiment trouvé de solution ici qui soit très simple, mais qui a quand même fait un bon travail pour la gestion
http
/ leshttps
liens.Gardez à l'esprit que CE N'EST PAS une solution parfaite, mais cela a fonctionné pour les cas ci-dessous. En résumé, l'expression régulière teste si l'URL commence par
http://
ouhttps://
, puis vérifie au moins 1 caractère, puis vérifie un point, puis vérifie à nouveau au moins 1 caractère. Aucun espace autorisé.Testé VALID par rapport à ces URL:
Testé INVALID par rapport à ces URL:
Source des URL: https://mathiasbynens.be/demo/url-regex
la source
Vous pouvez l'utiliser si vous ne voulez pas
http
ouhttps
ouwww
exemple
Production:
la source
La solution de Lefakir a un problème. Son regex ne peut pas correspondre à " http://instagram.com/p/4Mz3dTJ-ra/ ". Le composant URL a combiné des caractères numériques et littéraux. Son regex échoue à de telles URL.
Voici mon amélioration.
la source
J'ai trouvé le moyen le plus simple de le faire:
la source
NSURL
, ce qui pourrait être vérifié à la place de cela. Et même ainsi, il utilise une ancienne API.Le code ci-dessous vous permettra de trouver les URL valides
pour de telles URL
la source
La réponse approuvée est incorrecte. J'ai une URL avec un "-" dedans et la validation échoue.
la source
Réponse de Tweeked Vaibhav pour prendre en charge les liens G +:
NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w-\\+ ./?%&=]*)?";
la source
Certaines URL sans / à la fin ne sont pas détectées comme étant la bonne dans les solutions ci-dessus. Cela pourrait donc être utile.
la source
Validation d'URL dans Swift
Détails
Xcode 8.2.1, Swift 3
Code
Usage
Résultat
la source
Objectif c
J'espère que cela t'aides!
la source
vouliez-vous vérifier si ce que l'utilisateur a entré est une URL? Il peut être aussi simple comme une expression régulière, par exemple vérifier si la chaîne contient
www.
(ce qui est la façon dont les contrôles de Yahoo Messenger si le statut de l' utilisateur est un lien ou non) L'espoir que l' aide
la source
Égoïstement, je suggérerais d'utiliser une
KSURLFormatter
instance à la fois pour valider l'entrée et la convertir en quelque chose quiNSURL
peut gérer.la source
J'ai créé une classe héritée de UITextField qui peut gérer tout type de validation à l'aide de la chaîne regex. En cela, il vous suffit de leur donner toute la chaîne de regex dans l'ordre et leur message que vous souhaitez afficher lorsque la validation échoue. Vous pouvez consulter mon blog pour plus d'informations, cela vous aidera vraiment
http://dhawaldawar.wordpress.com/2014/06/11/uitextfield-validation-ios/
la source
En étendant la réponse de @ Anthony à swift, j'ai écrit une catégorie sur
String
laquelle renvoie une optionNSURL
. La valeur de retour estnil
si leString
ne peut pas être validé comme URL.la source
la source