es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Chequeo de comparación Bash para aceptar valores solo con formato 0.1.

Tengo este fragmento de código:

if [[ $1 =~ ^[+-]?[0-9]+\.?[0-9]*$ ]]; then
     echo 'versión es buena'
     exit 0
else 
     exit 1
fi

El problema es que este fragmento de código $1 =~ ^[+-]?[0-9]+\.?[0-9]*$ solo debería validar versiones formateadas como number.number.

Actualmente, esta porción de código valida las entradas como:

1
01
0.1

¿Existe alguna manera de hacer que el código solo acepte entradas formateadas como 0.1 / 0.3.2 / 0.1.141, etc.?

Gracias de antemano.

EDITAR:

Para aclarar esta pregunta, el código solo debería aceptar números separados con puntos, como la versión de un programa de software.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de modificar la expresión regular en el código para solo aceptar entradas con formato “número.número.número”. Aquí está el código modificado:

    if [[ $1 =~ ^[+-]?[0-9]+(\.[0-9]+){2}$ ]]; then
        echo 'la versión es buena'
        exit 0
    else 
        exit 1
    fi
    

    Aquí hay una breve explicación de los cambios:

    • (\.[0-9]+){2}$ – Esta parte de la expresión regular asegura que hay dos puntos seguidos de al menos un dígito después de cada punto. El {2} especifica que este patrón debe ocurrir dos veces (ya que queremos números de versión en forma de “x.y.z”).
    • Se eliminó el \.? de la expresión regular original para evitar que acepte números de un solo dígito.

    Con estos cambios, el código debería aceptar solo entradas con formato “número.número.número”.

Comments are closed.