Validación en EditText permitir IP o web Url host

Estoy en la necesidad de dar la validación en mi EditText de tal manera que me permite introducir un valor válido

Formato de dirección IP (?.?.?.?) Es decir ejemplo 132.0.25.225

o

Formato de url web (www.?.?) Ejemplo ejemplo www.example.com

Lógica es que si el usuario escribe cualquier valor numérico primero entonces validación (IP) hará la acción

Else usuario debe escribir "www" antes de cualquier cadena web

Nota : debe realizar onKeyListener () de EditText, quiero decir, mientras que el usuario que da entrada

En resumen – no voy a comprobar cuando el usuario completa la entrada y presione el botón OK

Cualquier idea apreciada, gracias.

Ip

private static final String PATTERN = "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$"; public static boolean validate(final String ip){ Pattern pattern = Pattern.compile(PATTERN); Matcher matcher = pattern.matcher(ip); return matcher.matches(); } 

Url

 try { new java.net.URI(url); } catch(MalformedURLException e) { // url badly formed } 

prueba esto ..

 public void checkIP(String Value) { Pattern pattern = Pattern.compile("[0-255].[0-255].[0-255].[0-255]"); Matcher matcher = pattern.matcher(Value); boolean IPcheck = matcher.matches(); if(IPcheck) //it is IP else //it is not IP } 

Esta ione funciona perfectamente para mí para comprobar url en android

  if (!URLUtil.isValidUrl(url)) { Toast.makeText(this, "Invalid URL", Toast.LENGTH_SHORT).show(); return; } 

Agregue un TextWatcher a su EditText y en el

 afterTextChanged (Editable s) 

Valide la entrada usando un regex y si el carácter de entrada no coincide con el regex, simplemente elimínelo usando el siguiente método.

 Editable.delete(int start, int end) 

Aquí una solución diferente para una validación de dirección IP pero que podría ser utilizada como referencia también para una validación de url web.

 EditText ipText = (EditText) findViewById(R.id.ip_address); ipText.setKeyListener(IPAddressKeyListener.getInstance()); 

………

 public class IPAddressKeyListener extends NumberKeyListener { private char[] mAccepted; private static IPAddressKeyListener sInstance; @Override protected char[] getAcceptedChars() { return mAccepted; } /** * The characters that are used. * * @see KeyEvent#getMatch * @see #getAcceptedChars */ private static final char[] CHARACTERS = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.' }; private IPAddressKeyListener() { mAccepted = CHARACTERS; } /** * Returns a IPAddressKeyListener that accepts the digits 0 through 9, plus * the dot character, subject to IP address rules: the first character has * to be a digit, and no more than 3 dots are allowed. */ public static IPAddressKeyListener getInstance() { if (sInstance != null) return sInstance; sInstance = new IPAddressKeyListener(); return sInstance; } /** * Display a number-only soft keyboard. */ public int getInputType() { return InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL; } /** * Filter out unacceptable dot characters. */ @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { if (end > start) { String destTxt = dest.toString(); String resultingTxt = destTxt.substring(0, dstart) + source.subSequence(start, end) + destTxt.substring(dend); if (!resultingTxt.matches("^\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3}(\\.(\\d{1,3})?)?)?)?)?)?")) { return ""; } else { String[] splits = resultingTxt.split("\\."); for (int i = 0; i < splits.length; i++) { if (Integer.valueOf(splits[i]) > 255) { return ""; } } } } return null; } 

}

Debe utilizar la clase java.net.InetAddress. Puede comprobar si hay todos los rotulados de la dirección IP: dirección del host (por ejemplo: 132.0.25.225) o nombre del host (por ejemplo: http://www.google.com); El formato IPv4 o IPv6 está bien.

El código fuente debería ejecutarse en el subproceso de trabajo, ya que en algún momento InetAddress.getAllByName (mStringHost) tarda mucho tiempo. Por ejemplo: se obtiene la dirección del nombre de host.

 Thread mThread = new Thread(new Runnable() { @Override public void run() { try { String mStringHost = "www.google.com"; //String mStringHost = "192.168.1.2"; InetAddress[] list_address = InetAddress.getAllByName(mStringHost); if(list_address != null && list_address.length >=1){ InetAddress inetAddress = list_address[0]; Log.d("test","inetAddress ="+ inetAddress.getHostAddress()); if( inetAddress instanceof Inet4Address){ //IPv4 process }else{ //IPv6 process } }else{ throw new Exception("invalid address"); } }catch(Exception e){ Log.e(TAG,"other exception",e); Toast.makeText(context, "Invalid host address or host name", Toast.LENGTH_SHORT).show(); //process invalide ip address here } } }); mThread.start() 
  • Entrada de archivo HTML en Chrome para Android falta extensión y tipo mime
  • Validar "desde fecha" y "hasta la fecha" en android
  • Cómo validar el código ussd para la comprobación del saldo
  • Centrarse en segundo edittext sólo si primero es no-vacío android
  • Añadir una anotación personalizada a Android Saripaar
  • Cómo restringir el EditText para aceptar sólo caracteres alfanuméricos
  • ¿Cómo validar una cadena usando java regex?
  • Cómo validar un nombre de URL / sitio web en EditText en Android?
  • ¿Cómo validar edittext con números enteros en android?
  • Cómo convertir InputStream en origen?
  • ¿No se muestran los indicadores de error (para validaciones de formularios) para android 4.2?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.