2009-11-12 21 views
17

Necesito una expresión regular que permita solo A-Z, a-z, 0-9, el carácter _ y el punto (.) En la entrada. Intenté:Coincidencia regex A-Z, a-z, 0-9, _ y

[A-Za-z0-9_.] 

Pero no funcionó. ¿Cómo puedo arreglarlo?

+2

se podía hacer con un poco más de información en este caso, es un poco vago. Algunos ejemplos de entrada serían buenos y el contexto en el que lo está utilizando, ¿también el lenguaje? –

Respuesta

40
^[A-Za-z0-9_.]+$ 

Desde el principio hasta el final de la cadena, haga coincidir uno o más de estos caracteres.

Editar:

Tenga en cuenta que ^ y $ coincidir el comienzo y el final de una línea. Cuando multiline está habilitado, esto puede significar que una línea coincide, pero no la cadena completa.

Utilice \A para el comienzo de la cadena, y \z para el final.

Véase, por ejemplo: http://msdn.microsoft.com/en-us/library/h5181w5w(v=vs.110).aspx

+3

También puede ser '^ [\ w.] + $', Pensó que no funciona en todas partes. – Kobi

+0

@Kobi: funciona en casi todas partes, simplemente de manera diferente :) – SilentGhost

5

Trabajando a partir de lo que ha dado Vamos a suponer que desea comprobar que alguien no ha introducido ningún cartas distintos a los que ha enumerado. Para que eso funcione desea buscar todos los caracteres que no sean los que figuran:

[^A-Za-z0-9_.] 

y el uso que en un partido en el código, algo así como:

if (/[^A-Za-z0-9_.]/.match(your_input_string)) { 
    alert("you have entered invalid data"); 
} 

Hows que?

0

Tal vez, debe especificar más exactamente lo que no funcionó y en qué entorno se encuentra.

En cuanto a la afirmación de que el punto es especial en una clase de charackter, esto no es cierto en todos los entornos de programación. Por ejemplo, el siguiente script Perl

use warnings; 
use strict; 

my $str = '!!!.###'; 
$str =~ s/[A-Za-z_.]/X/g; 
print "$str\n"; 

produce

!!!X### 
Cuestiones relacionadas