2008-12-23 380 views

Respuesta

338
/^[a-z0-9]+$/i 

^   Start of string 
[a-z0-9] a or b or c or ... z or 0 or 1 or ... 9 
+   one or more times (change to * to allow empty string) 
$   end of string  
/i  case-insensitive 
+2

Y eso es la magia allí mismo! – User

+31

[a-z] no coincide con caracteres internacionales. –

+14

Wow - No creo haber entendido completamente Regex hasta que se descompuso de esta manera simple. ¡Gracias! –

10
^\s*([0-9a-zA-Z]*)\s*$ 

o, si se quiere un mínimo de un personaje:

^\s*([0-9a-zA-Z]+)\s*$ 

corchetes indican un conjunto de caracteres.^es el inicio de la entrada. $ es el final de la entrada (o nueva línea, dependiendo de sus opciones). \ s es el espacio en blanco.

El espacio en blanco anterior y posterior es opcional.

Los paréntesis son el operador de agrupación que le permite extraer la información que desea.

EDITAR: eliminé el uso erróneo del juego de caracteres \ w.

59

Usa la palabra clase de caracteres. El siguiente es equivalente a un ^[a-zA-Z0-9_]+$:

^\w+$ 

Explicación:

  • ^inicio de la cadena de
  • \ w palabra de caracteres (A-Z, a-z, 0-9, _).
  • $ final de la cadena

Uso /[^\w]|_/g si no desea hacer coincidir el subrayado.

+16

\ w es en realidad equivalente a [a-zA-Z_0-9] por lo que su RegEx también coincide con los subrayados [_]. –

+0

casi alfanumérico no es alfanumérico en absoluto, pero gracias su ans me ayudó mucho – ajax333221

+0

Cierto, no es una respuesta estricta a la Q como se publicó, sino exactamente lo que estaba buscando .. – prototype

107

Si quieres devolver un resultado reemplazado, entonces esto funcionaría:

var a = 'Test123*** TEST'; 
var b = a.replace(/[^a-z0-9]/gi,''); 
console.log(b); 

Esto volvería:

Test123TEST 

Tenga en cuenta que el gi es necesaria porque no mundial (significa sólo en la primera coincidencia), y no distingue entre mayúsculas y minúsculas, por lo que tengo az en lugar de a-zA-Z. Y el^dentro de los paréntesis significa "cualquier cosa que no esté entre paréntesis".

ADVERTENCIA: Alphanumeric es genial si eso es exactamente lo que desea. Pero si está utilizando esto en un mercado internacional como el nombre o el área geográfica de una persona, entonces debe contar los caracteres Unicode, lo que no hará. Por ejemplo, si tiene un nombre como "Âlvarö", lo convertiría en "lvar".

+0

gracias por reemplazar al hombre clave, ¡estoy tan confundido como el infierno! – iamserious

+0

muy bien hecho. –

+0

Esta es una gran respuesta con la explicación. Recuerde permitir espacios si los necesita. .replace (/ [^ a-z0-9 \]/gi, '') –

27
/^([a-zA-Z0-9 _-]+)$/ 

la expresión regular anterior permite espacios en una cadena lateral y restringir characters.It especial sólo permite a-z, A-Z, 0-9, espacio, guión y guión.

+0

Muchachos increíbles. lo amo tanto :) –

1

Incluso mejor que Gayan Dissanayake señalado.

/^[-\w\s]+$/ 

Ahora ^[a-zA-Z0-9]+$ se puede representar como ^\w+$

Es posible que desee utilizar \ s en lugar de espacio. Tenga en cuenta que \ s se ocupa de espacios en blanco y no solo de un carácter de espacio.

3

En lugar de buscar una cadena alfanumérica válida, puede lograr esto indirectamente marcando la cadena en busca de caracteres no válidos. Hágalo marcando cualquier cosa que coincida con el complemento de la cadena alfanumérica válida.

/[^a-z\d]/i  

Aquí se muestra un ejemplo:

Aviso la lógica no operador en isValid, ya que estoy probando si la cadena es falso, no si es válido.

4

Extender el prototipo cadena que se utiliza en todo el proyecto

String.prototype.alphaNumeric = function() { 
     return this.replace(/[^a-z0-9]/gi,''); 
    } 

Uso:

"I don't know what to say?".alphaNumeric(); 
    //Idontknowwhattosay 
5

Esto funcionará

^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$ 

Se acepta solamente alphanumeriuc personajes solos:
de prueba casos pas ed:

dGgs1s23 - valid 
12fUgdf - valid, 
121232 - invalid, 
abchfe - invalid, 
abd()* - invalid, 
42232^5$ - invalid 

o

También puede probar esto. esta expresión satisfecha, al menos, un número y un carácter y no hay otros caracteres especiales

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$ 

en angular puede probar como:

$scope.str = '12fUgdf'; 
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$'); 
$scope.testResult = pattern.test($scope.str); 

PLUNKER DEMO

refirió: Regular expression for alphanumeric in Angularjs

0

Se parece que muchos usuarios se han dado cuenta de que estas expresiones regulares se almo st ciertamente falla a menos que trabajemos estrictamente en inglés. Pero creo que hay un camino fácil que no sería tan limitado.

  1. hacer una copia de su cadena en mayúsculas
  2. hacer una segunda copia en todas las minúsculas

Los caracteres que coincidan en esas cadenas definitivamente no son alfabéticos en la naturaleza.

let copy1 = originalString.toUpperCase(); 
let copy2 = originalString.toLowerCase(); 
for(let i=0; i<originalString.length; i++) { 
    let bIsAlphabetic = (copy1[i] != copy2[i]); 
} 

Opcionalmente, también se puede detectar numéricos con sólo mirar para los dígitos 0 a 9.

0

Prueba esto ... que reemplazar Identificación campo con #nombre ... az (A a Z), AZ (a a Z), 0-9 (0 a 9)

jQuery(document).ready(function($){ 
    $('#name').keypress(function (e) { 
     var regex = new RegExp("^[a-zA-Z0-9\s]+$"); 
     var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
     if (regex.test(str)) { 
      return true; 
     } 
     e.preventDefault(); 
     return false; 
    }); 
}); 
Cuestiones relacionadas