[a-zA-z0-9-._,\s] 文字セットのみに一致する文字列の正規表現を記述する必要があります。上記の文字セット以外では、エラーが発生するはずです。また、文字列の長さは 30 文字のみです。ワードラップも実装しました。ただし、文字列が上記の文字セット以外の場合、エラーをスローできません。どんな助けでも大歓迎です!
私の文字列は次のようになります:
shubhwork1234 567$#@!%^&*()<>:"-,._abadcew
私のコードは、[a-zA-z0-9-._,\s] 文字セットのみが許可されていることを示すエラーをスローする必要があります。
私の文字列が以下の場合:エラーは発生しません。
shubhworkwwwwwwwww1234567-,._ abadcew
私のコードは次のようになります:
#!/usr/bin/perl
my $prodname;
my $temp_str;
my $space = ' '; # word wrap done usign space character
$prodname = "shubhwork1234 567$#@!%^&*()<>:"-,._abadcew";
print (Product name not specified-name 1\n) unless($prodname);
print "\n Product name is : $prodname";
# For Product name , only 30 characters are allowed.
print "\nLength of product name : ",length($prodname),"\n";
if(length($prodname) > 30)
{
print "\n Hello world";
$temp_str = substr($prodname,0,40);
print qq| Length of Product Name can be 40 characters.Terminating rest of the string\n|);
#Handling xml special characters >,<,&,",'
$temp_str =~ s/&/&/g;
$temp_str =~ s/</</g;
$temp_str =~ s/>/>/g;
$temp_str =~ s/"/"/g;
$temp_str =~ s/'/'/g;
$temp_str =~ s/[\x00-\x08\x0B\x0C\x0E-\x19]//g;
# Word wrap
my $rindx = rindex($temp_str,$space);
$temp_str = substr($temp_str,0,$rindx);
print "\n Sting temp is : $temp_str";
#Here I ma not able to use negate properly for the character set.
if ($temp_str =~ m/^[a-zA-Z0-9]-._,\s*/)
{
print (qq| For product name : Invalid Input : Only [a-zA-Z0-9-._,] and spaces are allowed\n|);
}
$prodname = $temp_str;
print "\n assigning string is :",$prodname;
}