Respostas:
Você deve usar a função de substituição de cadeia, com um único regex. Assumindo caracteres especiais, você quer dizer qualquer coisa que não seja letra, eis uma solução:
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 há um espaço entre 0-9 e]
Você pode especificar os caracteres que deseja remover:
string = string.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');
Como alternativa, para alterar todos os caracteres, exceto números e letras, tente:
string = string.replace(/[^a-zA-Z0-9]/g, '');
/[^a-zA-Z0-9]/g
()
e whitespaces
na string.text().replace(/[ ()]/g, '')
A primeira solução não funciona para nenhum alfabeto UTF-8. (Ele cortará texto como Привіт). Eu consegui criar uma função que não usa RegExp e usa bom suporte a UTF-8 no mecanismo JavaScript. A idéia é simples se um símbolo é igual em maiúsculas e minúsculas, é um caractere especial. A única exceção é feita para espaços em branco.
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;
}
Atualização: observe que esta solução funciona apenas para idiomas em que há letras maiúsculas e minúsculas. Em idiomas como o chinês, isso não vai funcionar.
Atualização 2: cheguei à solução original quando estava trabalhando em uma pesquisa difusa. Se você também estiver tentando remover caracteres especiais para implementar a funcionalidade de pesquisa, existe uma abordagem melhor. Use qualquer biblioteca de transliteração que produza uma sequência apenas de caracteres latinos e, em seguida, o Regexp simples fará toda a mágica de remover caracteres especiais. (Isso também funcionará para os chineses e você também receberá benefícios colaterais ao fazer Tromsø
== Tromso
).
Não sei JavaScript, mas não é possível usar regex?
Algo como [^\w\d\s]
irá corresponder a qualquer coisa, exceto dígitos, caracteres e espaços em branco. Seria apenas uma pergunta para encontrar a sintaxe no JavaScript.
Tentei a solução muito criativa da Seagul, mas achei que os números também eram tratados como caracteres especiais, que não atendiam às minhas necessidades. Então, aqui está o meu (à prova de falhas) da solução da 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
em sua primeira função.
Tente usar este
var result= stringToReplace.replace(/[^\w\s]/gi, '')
aqui ^ carat é para negação \ w para [a-zA-Z0-9_] caracteres de palavra e \ s para espaço / [] / gi para global
ponto (.) pode não ser considerado especial. Adicionei uma condição OR à resposta da 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));
Quais caracteres especiais você deseja remover de uma sequência, prepare uma lista deles e, em seguida, a função de substituição do javascript do usuário para remover todos os caracteres especiais.
var str = 'abc'de#;:sfjkewr47239847duifyh';
alert(str.replace("'","").replace("#","").replace(";","").replace(":",""));
ou você pode executar um loop para uma sequência inteira e comparar um único caractere com o código ASCII e gerar novamente uma nova sequência.