Respuestas:
Debe usar la función de reemplazo de cadena, con una sola expresión regular. Asumiendo por caracteres especiales, quieres decir cualquier cosa que no sea letra, aquí hay una solución:
const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));
str.replace(/[^a-zA-Z0-9]/g, "")
str.replace(/[^a-zA-Z0-9 ]/g, "");
aviso, hay un espacio entre 0-9 y]
Puede hacerlo especificando los caracteres que desea eliminar:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
Alternativamente, para cambiar todos los caracteres excepto números y letras, intente:
string = string.replace(/[^a-zA-Z0-9]/g, '');
/[^a-zA-Z0-9]/g
()
y whitespaces
en cadena.text().replace(/[ ()]/g, '')
La primera solución no funciona para ningún alfabeto UTF-8. (Cortará texto como Привіт). He logrado crear una función que no utiliza RegExp y utiliza un buen soporte UTF-8 en el motor de JavaScript. La idea es simple si un símbolo es igual en mayúsculas y minúsculas, es un carácter especial. La única excepción se hace para los 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;
}
Actualización: Tenga en cuenta que esta solución solo funciona para idiomas donde hay letras minúsculas y mayúsculas. En idiomas como el chino, esto no funcionará.
Actualización 2: llegué a la solución original cuando estaba trabajando en una búsqueda difusa. Si también está tratando de eliminar caracteres especiales para implementar la funcionalidad de búsqueda, existe un mejor enfoque. Use cualquier biblioteca de transliteración que produzca su cadena solo de caracteres latinos y luego el simple Regexp hará toda la magia de eliminar caracteres especiales. (Esto también funcionará para los chinos y también recibirá beneficios secundarios al hacer Tromsø
== Tromso
).
No conozco JavaScript, pero ¿no es posible usar regex?
Algo así [^\w\d\s]
coincidirá con cualquier cosa menos dígitos, caracteres y espacios en blanco. Sería solo una pregunta para encontrar la sintaxis en JavaScript.
Probé la solución muy creativa de Seagul, pero descubrí que trataba los números también como caracteres especiales, lo que no se ajustaba a mis necesidades. Así que aquí está mi ajuste (a prueba de fallos) de la solución de Seagul ...
//return true if char is a number
function isNumber (text) {
if(text) {
var reg = new RegExp('[0-9]+$');
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '')) {
result += text[i];
}
}
return result;
}
return '';
}
reg
en su primera función.
Intenta usar este
var result= stringToReplace.replace(/[^\w\s]/gi, '')
aquí ^ quilate es para negación \ w para caracteres de palabras [a-zA-Z0-9_] y \ s para espacio / [] / gi para global
El punto (.) no puede considerarse especial. He agregado una condición OR a la respuesta de Mozfet & Seagull:
function isNumber (text) {
reg = new RegExp('[0-9]+$');
if(text) {
return reg.test(text);
}
return false;
}
function removeSpecial (text) {
if(text) {
var lower = text.toLowerCase();
var upper = text.toUpperCase();
var result = "";
for(var i=0; i<lower.length; ++i) {
if(isNumber(text[i]) || (lower[i] != upper[i]) || (lower[i].trim() === '') || (lower[i].trim() === '.')) {
result += text[i];
}
}
return result;
}
return '';
}
const input = `#if_1 $(PR_CONTRACT_END_DATE) == '23-09-2019' #
Test27919<alerts@imimobile.com> #elseif_1 $(PR_CONTRACT_START_DATE) == '20-09-2019' #
Sender539<rama.sns@gmail.com> #elseif_1 $(PR_ACCOUNT_ID) == '1234' #
AdestraSID<hello@imimobile.co> #else_1#Test27919<alerts@imimobile.com>#endif_1#`;
const replaceString = input.split('$(').join('->').split(')').join('<-');
console.log(replaceString.match(/(?<=->).*?(?=<-)/g));
Los caracteres especiales que desea eliminar de una cadena, prepare una lista de ellos y luego la función de reemplazo de JavaScript del usuario para eliminar todos los caracteres especiales.
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
o puede ejecutar el bucle para una cadena completa y comparar un solo carácter con el código ASCII y regenerar una nueva cadena.