Em um aplicativo para iPhone que estou desenvolvendo, há uma configuração na qual você pode inserir uma URL, devido à forma e à função, essa URL precisa ser validada online e offline.
Até agora não consegui encontrar nenhum método para validar o url, então a questão é;
Como faço para validar uma entrada de URL no iPhone (Objective-C) online e offline?
Respostas:
Graças a esta postagem , você pode evitar o uso do RegexKit. Aqui está minha solução (funciona para desenvolvimento de iphone com iOS> 3.0):
Se você quiser verificar em Swift minha solução fornecida abaixo:
fonte
((http|https)://)?((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+"
. Deve fazer com que http: // ou https: // seja opcional.Por que não simplesmente confiar
Foundation.framework
?Isso faz o trabalho e não requer
RegexKit
:De acordo com a documentação da Apple:
fonte
http://www.aol.comhttp://www.nytimes.com
passa neste teste.NSURL
não retorna nulo quando eu passo uma string de @ "# @ # @ $ ##% $ # $ #" ou @ "tp: / fdfdfsfdsf". Portanto, este método será inútil para verificar URLs HTTP válidos e semelhantes.Em vez de escrever suas próprias expressões regulares, conte com as da Apple. Tenho usado uma categoria em
NSString
que usaNSDataDetector
para testar a presença de um link dentro de uma string. Se o intervalo do link encontrado por forNSDataDetector
igual ao comprimento de toda a string, é um URL válido.fonte
Minha solução com Swift :
Para teste:
Resultados:
fonte
usa isto-
fonte
www.google.com/+gplusname
Resolvi o problema usando RegexKit e construí um regex rápido para validar um URL;
Então eu verifico se matchedString é igual a subjectString e se for o caso, o url é válido :)
Corrija-me se meu regex estiver errado;)
fonte
Estranhamente, não encontrei uma solução muito simples aqui, mas mesmo assim fiz um bom trabalho de manipulação
http
/https
links.Lembre-se de que ESTA NÃO É uma solução perfeita, mas funcionou nos casos abaixo. Em resumo, a regex testa se o URL começa com
http://
ouhttps://
, então verifica se há pelo menos 1 caractere, depois verifica se há um ponto e, em seguida, verifica novamente se há pelo menos 1 caractere. Não são permitidos espaços.VALID testado em relação a estes URLs:
INVALID testado em relação a estes URLs:
Fonte dos URLs: https://mathiasbynens.be/demo/url-regex
fonte
Você pode usar isso se não quiser
http
ouhttps
ouwww
exemplo
Resultado:
fonte
A solução de Lefakir tem um problema. Sua regex não pode corresponder a " http://instagram.com/p/4Mz3dTJ-ra/ ". O componente Url combinou caracteres numéricos e literais. Sua regex falha em tais URLs.
Aqui está minha melhora.
fonte
Eu descobri que a maneira mais fácil de fazer isso é:
fonte
NSURL
, de modo que poderia ser verificado em vez deste. E mesmo assim usa API antiga.O código abaixo permitirá que você encontre os URLs válidos
para tais URLS
fonte
A resposta aprovada está incorreta. Tenho uma URL com um "-" e a validação falha.
fonte
Resposta de Tweeked Vaibhav para apoiar links G +:
NSString *urlRegEx = @"http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w-\\+ ./?%&=]*)?";
fonte
Alguns URLs sem / no final não são detectados como os corretos nas soluções acima. Portanto, isso pode ser útil.
fonte
Validação de URL em Swift
Detalhes
Xcode 8.2.1, Swift 3
Código
Uso
Resultado
fonte
Objetivo C
Espero que isto ajude!
fonte
sua intenção era verificar se o que o usuário inseriu é um URL? Pode ser tão simples quanto uma expressão regular, por exemplo, verificar se a string contém
www.
(esta é a maneira que o yahoo messenger verifica se o status do usuário é um link ou não)Espero que ajude
fonte
Egoisticamente, eu sugeriria usar uma
KSURLFormatter
instância para validar a entrada e convertê-la em algo queNSURL
possa manipular.fonte
Eu criei uma classe herdada de UITextField que pode lidar com todos os tipos de validação usando string regex. Nesse caso, você só precisa fornecer a eles todas as strings de regex em sequência e a mensagem que deseja mostrar quando a validação falhar. Você pode checar meu blog para mais informações, vai te ajudar muito
http://dhawaldawar.wordpress.com/2014/06/11/uitextfield-validation-ios/
fonte
Estendendo a resposta de @Anthony para rápida, escrevi uma categoria na
String
qual retorna um opcionalNSURL
. O valor de retorno énil
se oString
não puder ser validado para ser um URL.fonte
fonte