validate test regulares regexp probar expresiones example especiales caracteres javascript regex special-characters

test - regexp javascript



Eliminar todos los caracteres especiales con RegExp (8)

¿Por qué no haces algo como esto?

re = /^[a-z0-9 ]$/i; var isValid = re.test(yourInput);

para comprobar si su entrada contiene algún char especial

Me gustaría un RegExp que elimine todos los caracteres especiales de una cadena. Estoy intentando algo como esto pero no funciona en IE7, aunque funciona en Firefox.

var specialChars = "!@#$^&%*()+=-[]//{}|:<>?,."; for (var i = 0; i < specialChars.length; i++) { stringToReplace = stringToReplace.replace(new RegExp("//" + specialChars[i], "gi"), ""); }

Una descripción detallada de RegExp sería útil también.


La primera solución no funciona para ningún UTF-8 alphaben. (Cortará texto como Їжак). He logrado crear una función que no usa RegExp y uso una buena compatibilidad con UTF-8 en el motor de JavaScript. La idea es simple si el símbolo es igual en mayúsculas y minúsculas es un carácter especial. La única excepción se hace para espacios en blanco.

function removeSpecials(str) { var lower = str.toLowerCase(); var upper = str.toUpperCase(); var res = ""; for(var i=0; i<lower.length; ++i) { if(lower[i] != upper[i] || lower[i].trim() === '''') res += str[i]; } return res; }


Tenga en cuenta que si aún desea excluir un conjunto, incluidos elementos como barras y caracteres especiales, puede hacer lo siguiente:

var outString = sourceString.replace(/[`~!@#$%^&*()_|+/-=?;:''",.<>/{/}/[/]////]/gi, '''');

tenga en cuenta que para incluir también el carácter "menos", debe escapar con una barra inversa como este último grupo. si no lo hace, también seleccionará 0-9, que probablemente no sea deseado.


Uso RegexBuddy para depurar mis expresiones regulares, tiene casi todos los idiomas muy útiles. Que copiar / pegar para el idioma de destino. Excelente herramienta y no muy caro.

Así que copié / pegué su expresión regular y su problema es que [,] son ​​caracteres especiales en expresiones regulares, por lo que debe escapar de ellos. Así que la expresión regular debería ser: /!@#$^&%*()+=-[/x5B/x5D]//{}|:<>?,./im


use regex ^[^///()~!@#$%^&*{«»„““”''''|/n/t….,;`^"<>''}+:?®©]*$


str.replace(//s|[0-9_]|/W|[#$%^&*()]/g, "") Hice algo así. Pero hay algunas personas que lo hicieron mucho más fácil, como str.replace(//W_/g,"");


La expresión regular de Javascript no maneja las letras Unicode . No use [^/w/s] , esto eliminará las letras con acentos (como àèéìòù), sin mencionar el cirílico o el chino, las letras que provengan de dichos idiomas se eliminarán por completo.

Realmente no desea eliminar estas letras junto con todos los caracteres especiales. Tienes dos posibilidades:

  • Agrega en tu expresión regular todos los caracteres especiales que no quieras eliminar,
    por ejemplo: [^èéòàùì/w/s] .
  • Eche un vistazo a xregexp.com . XRegExp agrega soporte base para la coincidencia Unicode a través de la sintaxis /p{...} .

var str = "Їжак::: résd,$%& adùf" var search = XRegExp(''([^?<first>//pL ]+)''); var res = XRegExp.replace(str, search, '''',"all"); console.log(res); // returns "Їжак::: resd,adf" console.log(str.replace(/[^/w/s]/gi, '''') ); // returns " rsd adf" console.log(str.replace(/[^/wèéòàùì/s]/gi, '''') ); // returns " résd adùf"

<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.js"></script>


var desired = stringToReplace.replace(/[^/w/s]/gi, '''')

Como se mencionó en los comentarios, es más fácil hacer esto como una lista blanca: reemplace los caracteres que no están en su lista segura.

El carácter de intercalación ( ^ ) es la negación del conjunto [...] , gi dice global y no distingue entre mayúsculas y minúsculas (este último es un poco redundante, pero quería mencionarlo) y la lista segura en este ejemplo son dígitos, caracteres de palabra , guiones bajos ( /w ) y espacios en blanco ( /s ).