Desejo remover todos os caracteres especiais, exceto o espaço, de uma string usando JavaScript.
Por exemplo,
abc's test#s
deve gerar como
abcs tests
.
Desejo remover todos os caracteres especiais, exceto o espaço, de uma string usando JavaScript.
Por exemplo,
abc's test#s
deve gerar como
abcs tests
.
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:
fonte
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:
Como alternativa, para alterar todos os caracteres, exceto números e letras, tente:
fonte
/[^a-zA-Z0-9]/g
()
ewhitespaces
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.
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
).fonte
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.fonte
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 ...
fonte
reg
em sua primeira função.pesquisar tudo não (caracteres de palavra || espaço):
fonte
Tente usar este
aqui ^ carat é para negação \ w para [a-zA-Z0-9_] caracteres de palavra e \ s para espaço / [] / gi para global
fonte
ponto (.) pode não ser considerado especial. Adicionei uma condição OR à resposta da Mozfet & Seagull:
fonte
fonte
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.
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.
fonte