2011-12-02 9 views
5

Estoy tratando de crear una expresión regular que elija la más larga de las dos opciones de una cadena.Expresión regular para elegir la opción más larga

O un valor numérico de hasta 15 caracteres de longitud o un valor de hasta 11 caracteres de longitud.

Hasta ahora tengo esto:

^([0-9]{1,15}|.{1,11}) 

Pero por ejemplo la cadena: '7elevenshopfood' consigue acortar a '7' porque se ve en la primera parte del un paréntesis. Y si me cambio a

^(.{1,11}|[0-9]{1,15}) 

la cadena '123456789123456789' se acortó a '12345678912' ya que se ve en la primera parte de la expresión de nuevo.

¿Alguien con mayor conocimiento de expresiones regulares tiene una idea?

+0

Qué expresiones regulares dialecto/idioma/herramienta? – Qtax

Respuesta

6

Así es como funcionan la mayoría de los dialectos de expresiones regulares, las alternancias se prueban para que se escriban y la primera parte correspondiente finaliza la búsqueda.

En su caso se puede evitar que con algo como:

^(\d{12,15}|.{1,11}) 
+2

Excelente respuesta. – FailedDev

+0

tan simple! : +1. – Toto

+0

Eso es muy obvio cuando lo ves ... ¡Gracias! – Sonny

Cuestiones relacionadas