2010-07-08 14 views
44

¿Cuál es la expresión regular que coincida con xxx[any ascii char here, spaces included]+xxx?
Estoy intentando xxx[(\w)(\W)(\s)]+xxx pero parece que no funciona.Regex cualquier carácter ascii

Respuesta

55

Si usted realmente quiere decir cualquier (no todos los caracteres Unicode, por ejemplo) y ASCII:

xxx[\x00-\x7F]+xxx 

JavaScript ejemplo:

var re = /xxx[\x00-\x7F]+xxx/; 

re.test('xxxabcxxx') 
// true 

re.test('xxx☃☃☃xxx') 
// false 
+0

esto no parece funcionar de la manera que pensaba que lo haría . ¿Esto coincide con las representaciones BYTE de los personajes ascii, no con los caracteres visuales impresos/escritos? – anon58192932

+0

@advocate, sí lo hace. ¿En qué idioma probaste? Eso podría ser. –

+0

oh, esperaba encontrar algo que coincidiera con las versiones impresas de los caracteres ASCII :) – anon58192932

4

Trate de usar .+ en lugar de [(\w)(\W)(\s)]+.

Tenga en cuenta que esto realmente incluye más de lo que necesita - ASCII solo define los primeros 128 caracteres.

0

. representa cualquier char, por lo que escriben su expresión regular como esto:

xxx.+xxx 
0

Dependiendo de a qué se refiere con "char ascii" simplemente podría intentar

xxx.+xxx 
7

Desde US-ASCII los caracteres están en el rango de bytes de 0x00-0x7F (0-127):

xxx[\x00-\x7F]+xxx 
23

puede usar [[:ascii:]] clase

+2

. .si se implementa – mykhal

+0

@catwalk ¡Eres mi héroe por hoy! No aceptaba \ x00- \ x7F por alguna razón, pero tomó [: ascii:]. ¡Gracias! – n0nag0n

+4

Tenga en cuenta que [[: ascii:]] coincidiría con cualquier carácter ASCII, incluso los caracteres no imprimibles, mientras que [- ~] coincidiría solo con el subconjunto imprimible de ASCII. – elolos

40
[ -~] 

seen here Coincide con todos los caracteres ASCII desde el espacio a la tilde

Por lo que su aplicación sería:

xxx[ -~]+xxx 
+0

Esto es perfecto, ya que la respuesta aceptada no funcionó con el atributo [RegularExpression] en ASP.NET MVC: se procesa como caracteres Unicode y esto interrumpe la validación. – Art

+2

Solución realmente elegante, altamente legible y semánticamente exactamente lo que estaba buscando. –

+0

@Art Esto no funciona para mí con un atributo '[RegularExpression]' ... ¿Tuviste que hacer algo especial para que funcione? Mi atributo es simplemente '' Pero ni siquiera aceptará "asdf". – Zack

Cuestiones relacionadas