-1

特定の文字列に許可される最大長の Perl 検証式を作成しようとしています (特定のインターフェイスで)

私が試した/.{0,5}/、または/^.{0,5}&/気付いたことは多くの同様のケースで使用されていましたが、入力された文字列 (20 文字未満でも) が失敗したようです...

私は多くの方法で検索してテストしましたが、結果はありませんでした。

私は最近試しました:

[[:alpha:]]\{0,20\}

しかし、その行動は非常に奇妙でした...

どうすればこれを修正できますか? ユーザーがフォームに20文字以上入力できないようにするのは興味深いことです。

4

3 に答える 3

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
于 2013-02-07T15:51:49.337 に答える
1

コマンドラインから入力を読み取る場合は、これを試してください。

#!/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);
    }
}
于 2013-02-08T11:05:25.060 に答える
0

使用/^.{1,20}$/:

$ echo "12345678901234567890123" | perl -nle "print if /^.{1,20}$/"

$ echo "12345678901234567890" | perl -nle "print if /^.{1,20}$/"
12345678901234567890
于 2013-02-07T16:53:19.010 に答える