----- Original Message -----
From: "anne aublanc" <anne.aublanc@???>
To: <guilde@???>
Sent: Sunday, July 11, 2004 6:36 PM
Subject: expression régulière
| Bonjour,
|
| J'ai récupéré des petits pgm perl pour créer des utilisateurs, groupe,
| ibay...
| et j'ai des soucis! ;o)) avec les expressions régulières!
|
| Je fais des essais :
| $_[0] =~ /^[0-9a-zA-Z][A-Za-z0-9]*/
| $_[0] =~ /^[0-9a-zA-Z][.]*/
|
| J'ai du mal à comprendre ce que veut dire caractères alphanumériques... y
| compris les caractères spéciaux?
| J'aimerai refuser les caractères spéciaux...
| J'aimerai avoir les ( ) -_ (ce dont on a besoin pour mettre des nom,
prénom,
| adresse...)
|
| Les différents arguments envoyés sont séparés par des "|".
|
le 1er test laisse passer les caractères spéciaux... le 2ème aussi mais
c'est normal pour le deuxième... Je pensais que pour le premier je n'avais
que les chiffres et les caractères de l'alphabet (minuscule et majuscule) !
-a = ajout utilisateur
-c= argument (nom du compte | prénom | nom | mot de passe | rue |....)
commande lancée :
[root@maison1 root]# nom_pgm -a -c "userfax11 | u@ser@ | f#ax@$¤ù |
mdpuserfax1"
Creating user account for userfax11 (Uid:5018).
malgré tous les signes que j'ai mis dans le nom et le prénom...l'utilisateur
est créé: ;o((
le bout de code qui traite :
if ($Add) {
# Process each user
foreach my $record (@records)
{
my @fields=split(/\|/,$record);
for (my $cnt=0; $cnt <= $#fields; ++$cnt) { for ($fields[$cnt]) {
s/^\s+//; s/\s+$//; }}
my $username = $fields[0];
my $firstname = $fields[1];
my $lastname = $fields[2];
if ( @fields >= 3) { # The first three arguments are manadatory.
if ( ! db_get(\%accounts, $username)) {
if ( &TestName($username))
{
if ( &TestName($firstname))
{
if ( &TestName($lastname))
{
#===========================================================================
===
# Test first name and last name exist
sub TestName {
if ( $_[0] =~ /^[0-9a-zA-Z][A-Za-z0-9]*/ ) {
return -1;
}
else {
print "The first name and/or last name must not be left blank or
contain illegal characters.\n\a";
return 0;
}
}
si quelqu'un peut corriger...
merci
anne