2017-06-01 4 views
2

Nach regexp akzeptiert alle positiven reellen Zahlen (ohne 0)Bash regexp für alle positiven reellen Zahlen (ohne 0)

^(?!0*(\.0+)?$)(\d+|\d*\.\d+)$ 

Es funktioniert z.B. in JavaScript. Was ist der richtige Weg in bash, um mit dem Operator = ~ zu testen, ist eine Variable, die konsistent mit dem regulären Ausdruck ist (z. B. müssen Zeichen mit Backslash versehen werden).

Bash-Version ist 4.4.12.

+0

Ihre regex nicht einmal in Javascript funktioniert: '0.05',' 0.1', '.2' nicht –

+0

passen @NahuelFouilleul sie es tun, haben Sie Versuchen? – perreal

+0

mein Schlechter ich habe die Backslashes nicht verdoppelt –

Antwort

0

etwas tun sollte:

if [[ $v =~ ^([0-9]+|([0-9]*[.][0-9]+))$ ]] && ! [[ $v =~ ^(0*(\.0+))$ ]]; then 
    echo "Match" 
fi 
Verwandte Themen