Amber имеет правильное регулярное выражение
. Чтобы продемонстрировать это в Groovy, вы можете сделать:
def testcases = [
[ '1', true ],
[ '1.5301', true ],
[ '99.6732', true ],
[ '99.1', true ],
[ '100.1', false ],
[ '100', true ],
]
testcases.each { val, result ->
assert ( val ==~ /100(\.0+)?|([1-9]?[0-9])(\.[0-9]+)?/ ) == result
}
Однако я, вероятно, сделал бы что-то вроде:
testcases.each { val, result ->
try {
Double.parseDouble( val ).with {
assert ( it >= 0 && it <= 100 ) == result
}
} catch( ex ) {
assert result == false
}
}
Поскольку проверка диапазонов с регулярным выражением кажется чем-то вроде безрассудного пути