Freaking Crap, Regex Does Suck
30 Mar 2005 @14:37I spend the better part of two hours working on a regex (regular expression) Perl program for my web programming class. Granted, regexs are very power; but boy are they hard. Download the following code and compile/run with ActivePerl 5.8 or better:
#!C:perlbinperl.exe
#Program: Contact.pl
#Author: Andrew Ferguson
#Copyright Andrew Ferguson 2005. All Rights Reserved.
sub FormatName{
my ($n) = @_;
$n =~ tr/A-Z/a-z/; #Convert everything to lowercase to make it easier to work with
$n =~ s/^(w)/uc($1)/ge; #Capitilze the first letter;
return $n;
}
do{
print "Enter your first name: ";
$first_name = <>;
}while($first_name !~ / ^([A-Z]||[a-z])*$ /x); #Make sure only alphas are getting through
$first_name = &FormatName($first_name);
print "$first_name";
do{
print "Enter your last name: ";
$last_name = <>;
}while($last_name !~ / ^([A-Z]||[a-z])*$ /x);#Make sure only only alphas are getting through
$last_name = &FormatName($last_name);
print "$last_name";
do{
print "Enter your phone number [(123)555-1212]: ";
$phone = <>;
}while($phone !~ / ^(?(d{3})?)?(-)?(d{3})(-?)(d{4})$ /x ); #Check syntax of entry and make sure it fits what we want
$phone = "$1-$3-$5";
print "$phonen";
do{
print "Enter today's date: ";
$date = <>;
}while($date !~ /^([0-1])?([0-9])/([0-3])?([0-9])/([0-2])?([0-9])?([0-9]{2})$/); #Check syntax of entry and make sure it fits what we want
$_1 = $1-0;
$_3 = $3-0;
$date = "$_1$2/$_3$4/$5$6$7$8";
print "$daten";
do{
print "Enter the time: ";
$time = <>;
}while($time !~ /^([0-2])?([0-9]):([0-5])?([0-9]):([0-5])?([0-9])$/); #Check syntax of entry and make sure it fits what we want
$_1 = $1-0;
$_3 = $3-0;
$_5 = $5-0;
$time = "$_1$2:$_3$4:$_5$6";
print "$timen";
do{
print "Enter your email address: ";
$email = <>;
}
while($email =~ /(@.*@)|(..)|(@.)|(.@)|(^.)/ || $email !~ /^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$/); #Checks to make sure format is correct. Acceptable formats are things like: a.ferg@fergcorp.com, andrew@fergcorp.com, aferg@70.56.95.233, aferg@fergcorp.co.uk, etc
print "$emailn";
print "First name:$first_name
Last name: $last_name
Phone: $phonen
Date: $daten
Time: $timen
Email: $emailn";
open(DAT,">data.txt") || die("Cannot Open File");
print DAT "First name:$first_name
Last name: $last_name
Phone: $phonen
Date: $daten
Time: $timen
Email: $emailn";
close(DAT);
RSS 









Recent Comments