Я борюсь с проверкой действительности номеров версий в Perl. Правильный номер версии, как это:Проверка правильности номера версии с Perl
- Запускает либо с V или верами,
- После этого число, если 0, то никаких других цифр не допускается в этой части (например, 10, 3993 и 0 ok, 01 нет),
- После этого полная остановка, номер, полная остановка, номер, полная остановка и номер.
I.e. действительный номер версии может выглядеть примерно как v0.123.45.678 или ver18.493.039.1.
я придумал следующее регулярное выражение:
if ($ver_string !~ m/^v(er)?(0{1}\.)|([1-9]+\d*\.)\d+\.\d+\.\d+/)
{
#print error
}
Но это не работает, потому что номер версии, как verer01.34.56.78 получает принято. Я не могу понять этого, я знаю, что Perl имеет тенденцию быть жадным, но не должен ли он (v)? убедитесь, что может быть максимум один «er»? И почему не 0 {1}. соответствует только «0.», вместо того, чтобы принимать «01». также?
Это регулярное выражение действительно зацепило вещь «rere»: m/^ v (er)? [0-9.] + /, Но я не вижу, где я разрешаю это в своей попытке.
Это работает, отлично! Спасибо! – Makis