En una aplicación para iPhone que estoy desarrollando, hay una configuración en la que puede ingresar una URL, debido a la forma y función, esta URL debe validarse en línea y fuera de línea.
Hasta ahora no he podido encontrar ningún método para validar la URL, por lo que la pregunta es;
¿Cómo valido una entrada de URL en el iPhone (Objective-C) en línea y fuera de línea?
Respuestas:
Gracias a esta publicación , puede evitar usar RegexKit. Aquí está mi solución (funciona para el desarrollo de iPhone con iOS> 3.0):
Si desea verificar en Swift, mi solución se proporciona a continuación:
fuente
((http|https)://)?((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"
.Debe hacer que http: // o https: // sea opcional.¿Por qué no simplemente confiar en él
Foundation.framework
?Eso hace el trabajo y no requiere
RegexKit
:Según la documentación de Apple:
fuente
http://www.aol.comhttp://www.nytimes.com
pasa esta prueba.NSURL
no devuelve nil cuando paso una cadena de @ "# @ # @ $ ##% $ # $ #", o @ "tp: / fdfdfsfdsf". Por lo tanto, este método será inútil para verificar URL HTTP válidas y similares.En lugar de escribir sus propias expresiones regulares, confíe en las de Apple. He estado usando una categoría
NSString
que se usaNSDataDetector
para probar la presencia de un enlace dentro de una cadena. Si el rango del enlace encontrado porNSDataDetector
es igual a la longitud de la cadena completa, entonces es una URL válida.fuente
Mi solución con Swift :
Para prueba:
Resultados:
fuente
utilizar este-
fuente
www.google.com/+gplusname
Resolví el problema usando RegexKit y construí una expresión regular rápida para validar una URL;
Luego verifico si matchedString es igual a subjectString y si ese es el caso, la url es válida :)
Corrígeme si mi expresión regular es incorrecta;)
fuente
Por extraño que parezca, realmente no encontré una solución aquí que fuera muy simple, pero aún así hice un buen trabajo para manejar
http
/https
enlaces.Tenga en cuenta que ESTA NO ES una solución perfecta, pero funcionó para los casos siguientes. En resumen, la expresión regular prueba si la URL comienza con
http://
ohttps://
, luego verifica al menos 1 carácter, luego busca un punto y luego nuevamente verifica al menos 1 carácter. No se permiten espacios.Probado VÁLIDO contra estas URL:
Probado NO VÁLIDO contra estas URL:
Fuente de las URL: https://mathiasbynens.be/demo/url-regex
fuente
Puedes usar esto si no quieres
http
ohttps
owww
ejemplo
Salida:
fuente
La solución de Lefakir tiene un problema. Su expresión regular no puede coincidir con " http://instagram.com/p/4Mz3dTJ-ra/ ". El componente de URL tiene un carácter numérico y literal combinado. Su expresión regular falla en tales URL.
Aquí está mi mejora.
fuente
Encontré que la forma más fácil de hacer esto es así:
fuente
NSURL
, por lo que se podría verificar en lugar de esto. Y aun así usa API antigua.El siguiente código le permitirá encontrar las URL válidas
para tales URL
fuente
La respuesta aprobada es incorrecta. Tengo una URL con un "-" y la validación falla.
fuente
Tweeked la respuesta de Vaibhav para admitir enlaces de G +:
NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w-\\+ ./?%&=]*)?";
fuente
Algunas URL sin / al final no se detectan como correctas en las soluciones anteriores. Entonces esto podría ser útil.
fuente
Validación de URL en Swift
Detalles
Xcode 8.2.1, Swift 3
Código
Uso
Resultado
fuente
C objetivo
¡Espero que esto ayude!
fuente
¿Quisiste comprobar si lo que el usuario ingresó es una URL? Puede ser tan simple como una expresión regular, por ejemplo, la comprobación de si la cadena contiene
www.
(esta es la forma en que los cheques Yahoo Messenger Si el estado del usuario es un enlace o no)la esperanza de que la ayuda
fuente
Egoístamente, sugeriría usar una
KSURLFormatter
instancia para validar la entrada y convertirla en algo queNSURL
pueda manejar.fuente
He creado una clase heredada de UITextField que puede manejar todo tipo de validación usando una cadena de expresiones regulares. En esto, solo necesita darles toda la cadena de expresiones regulares en secuencia y su mensaje que desea mostrar cuando la validación falla. Puedes consultar mi blog para obtener más información, realmente te ayudará.
http://dhawaldawar.wordpress.com/2014/06/11/uitextfield-validation-ios/
fuente
Extendiendo la respuesta de @ Anthony a swift, escribí una categoría en la
String
que devuelve un opcionalNSURL
. El valor de retorno esnil
siString
no se puede validar como una URL.fuente
fuente