Perl регулярное выражение относительно максимальной длины символов
Я пытаюсь создать выражение проверки Perl для максимальной длины, разрешенной для данной строки (в определенном интерфейсе)
Я старался /.{0,5}/
или же /^.{0,5}&/
что я заметил, что используется во многих подобных случаях, но кажется, что любая введенная строка (даже ниже 20 символов) не работает...
Я искал и тестировал много разных способов, но безрезультатно.
Я недавно попробовал:
[[:alpha:]]\{0,20\}
но поведение было очень странным.. Можете ли вы помочь мне? Мне просто интересно, чтобы пользователь не вводил 20 или более символов в форме Спасибо!
3 ответа
Вместо использования регулярных выражений попробуйте length()
функция.
Пример:
my $max = 4;
my $input = "qwerty";
if (length($input) < $max) {
print "[$input] is less than $max\n";
} else {
print "[$input] is more or equal than $max\n";
}
Увидеть
perldoc -f length
Попробуйте это, если вы читаете ввод из командной строки.
#!/usr/perl/bin -w
use strict;
my $input;
while (1) {
$input = <>;
if(length($input) < 20) {
print "perfect\n";
} else {
print "Exceeded 20 characters\n";
exit(1);
}
}
Как насчет /^.{1,20}$/
?
$ echo "12345678901234567890123" | perl -nle "print if /^.{1,20}$/"
$ echo "12345678901234567890" | perl -nle "print if /^.{1,20}$/"
12345678901234567890