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
Другие вопросы по тегам