Me gustaría tener una expresión regular que compruebe si una cadena contiene sólo letras mayúsculas y minúsculas, números y guiones bajos.
Una pregunta: ¿Es necesario que tenga al menos un carácter o no? ¿Puede ser una cadena vacía?
^[A-Za-z0-9_]+$
Hará al menos un carácter alfanumérico en mayúsculas o minúsculas o un guión bajo. Si puede ser de longitud cero, entonces sólo sustituye el + por *
^[A-Za-z0-9_]*$
Editar:
Si es necesario incluir los diacríticos (como la cedilla - ç) entonces tendría que utilizar el carácter de palabra que hace lo mismo que lo anterior, pero incluye los caracteres diacríticos:
^\w+$
O
^\w*$
La siguiente expresión regular coincide con los caracteres alfanuméricos y el guión bajo:
^[a-zA-Z0-9_]+$
Por ejemplo, en Perl
#!/usr/bin/perl -w
my $arg1 = $ARGV[0];
# check that the string contains *only* one or more alphanumeric chars or underscores
if ($arg1 !~ /^[a-zA-Z0-9_]+$/) {
print "Failed.\n";
} else {
print "Success.\n";
}