Identificar el tipo de patrón de regex

En mi aplicación estoy añadiendo edittext basado en la respuesta proporcionada por el servidor. Para cada servidor edittext también proporciona un patrón regex para que coincida. Puedo con éxito poder emparejar patrón y hacer validaciones. Pero quiero identificar el tipo de patrón regex para que pueda abrir el teclado de acuerdo al valor edittext debe aceptar.

Por ejemplo, si edittext debe aceptar la dirección de correo electrónico, entonces el teclado con signo @ se abre y si edittext aceptar valores numéricos debe abrir el teclado numérico.

¿Hay alguna biblioteca que puede devolver el tipo de su patrón regex como "Email", "Number", etc. a partir de expresiones regulares, ya que puede haber varios tipos diferentes de patrones regex?

EDIT: Sé cómo configurar el tipo de entrada para edittext, pero tengo que averiguar el tipo de patrón regex. No soy capaz de hacer cambios en el servidor que tengo que manejar esto en el lado del cliente.

One Solution collect form web for “Identificar el tipo de patrón de regex”

Lo más probable es que no sea uno. La razón es – no hay manera de saber con seguridad. Cualquier cosa que puedas imaginar será heurística.

Heurística:

  1. Si el patrón busca algo que contenga un punto , seguido de signo @ , seguido por algo que contiene un punto , es una validación de correo electrónico.
  2. Si el patrón contiene sólo \d , o rangos numéricos ( [1-5] ), o números simples ( 7 ) más meta caracteres de repetición ( ? , * , + , {4, 12} ), es una validación numérica.
  3. Si el patrón contiene \w y no @ signo, es un texto regular.
  4. Continúe en el mismo espíritu.

    • + alto control. Siempre puede agregar nuevas conjeturas cuando vea que sus resultados no son precisos en algunos casos
    • – requiere más código para implementar
    • – requiere muy buen conocimiento de regexes

Heurística dos:

Utilice una lista de cadenas, que usted sabe el tipo de e intentar emparejarlas con el regex. Aka, para los correos electrónicos pruebe example@gmail.com .

  • + fácil de implementar. Pequeña casualidad lógica problemática
  • – menor cantidad de control. Si el servidor le da patrones de correo electrónico para diferentes dominios, no puede adivinar que se trata de un patrón de correo electrónico, a menos que conozca todos los dominios posibles

Heurística tres:

Utilice una biblioteca que puede generar cadenas de ejemplo de regex y hacer coincidirlas con sus propias expresiones regulares para determinar el tipo. Aquí hay uno para Java y otro para JavaScript .

  • + da una buena combinación de alto control y fácil implementación
  • – usted todavía tiene que escribir sus propias regexes (no tan triviales como la segunda heurística)
  • – la gente a veces escribe regexes que permiten algunos falsos positivos. Por lo tanto, las cadenas generadas pueden no estar en el formato perfecto (no tanto control como la primera heurística)

¿Son estáticos los regexes?

  • En caso afirmativo, debe hacer un mapeo y usarlo.
  • Si no, utilice una heurística como una de las anteriores y mejórela con el tiempo a medida que gana más estadísticas sobre cómo suelen aparecer las expresiones regulares generadas.
  • Java Regex lookahead toma demasiado tiempo
  • Regex para eliminar el número de pista del nombre de la canción?
  • Regex <img> Análisis de etiquetas con src, width, height
  • Palabra árabe Buscando en el archivo de texto en árabe
  • Android: ¿dividido en un salto de línea en String? (Párrafos)
  • Cómo reemplazar una cadena si no está contenida entre '<' y '>'
  • ¿Cómo busco una lista de correo electrónico para un formato determinado?
  • ¿Puedo hacer regex reemplazar en Android con grupos del partido?
  • Cómo analizar valores float de cadena utilizando REGEX en java
  • ¿Qué significa * + en regexp
  • Ant regex para nombres de paquetes android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.