Je souhaite supprimer tous les caractères spéciaux à l'exception de l'espace d'une chaîne à l'aide de JavaScript.
Par exemple,
abc's test#s
devrait sortir comme
abcs tests
.
Je souhaite supprimer tous les caractères spéciaux à l'exception de l'espace d'une chaîne à l'aide de JavaScript.
Par exemple,
abc's test#s
devrait sortir comme
abcs tests
.
Réponses:
Vous devez utiliser la fonction de remplacement de chaîne, avec une seule expression régulière. En supposant que vous entendez par caractères spéciaux tout ce qui n'est pas une lettre, voici une solution:
la source
str.replace(/[^a-zA-Z0-9]/g, "")
str.replace(/[^a-zA-Z0-9 ]/g, "");
avis, il y a un espace entre 0-9 et]Vous pouvez le faire en spécifiant les caractères que vous souhaitez supprimer:
Sinon, pour changer tous les caractères à l'exception des chiffres et des lettres, essayez:
la source
/[^a-zA-Z0-9]/g
()
etwhitespaces
dans la chaîne.text().replace(/[ ()]/g, '')
La première solution ne fonctionne pour aucun alphabet UTF-8. (Il coupera du texte tel que Привіт). J'ai réussi à créer une fonction qui n'utilise pas RegExp et utilise un bon support UTF-8 dans le moteur JavaScript. L'idée est simple si un symbole est égal en majuscules et en minuscules, c'est un caractère spécial. La seule exception concerne les espaces.
Mise à jour: veuillez noter que cette solution ne fonctionne que pour les langues contenant des lettres minuscules et majuscules. Dans des langues comme le chinois, cela ne fonctionnera pas.
Mise à jour 2: Je suis arrivé à la solution originale lorsque je travaillais sur une recherche floue. Si vous essayez également de supprimer des caractères spéciaux pour implémenter la fonctionnalité de recherche, il existe une meilleure approche. Utilisez n'importe quelle bibliothèque de translittération qui produira votre chaîne uniquement à partir de caractères latins, puis la simple expression rationnelle fera toute la magie de la suppression des caractères spéciaux. (Cela fonctionnera également pour le chinois et vous recevrez également des avantages secondaires en faisant
Tromsø
==Tromso
).la source
Je ne connais pas JavaScript, mais n'est-ce pas possible d'utiliser regex?
Quelque chose comme
[^\w\d\s]
correspondra à tout sauf aux chiffres, aux caractères et aux espaces. Ce serait juste une question pour trouver la syntaxe en JavaScript.la source
J'ai essayé la solution très créative de Seagul, mais j'ai trouvé qu'elle traitait également les nombres comme des caractères spéciaux, ce qui ne répondait pas à mes besoins. Voici donc mon ajustement (de sécurité) de la solution de Seagul ...
la source
reg
dans votre première fonction.rechercher tout pas (caractères de mot || espace):
la source
Essayez d'utiliser celui-ci
ici ^ carat est pour la négation \ w pour [a-zA-Z0-9_] caractères de mot et \ s pour l'espace / [] / gi pour global
la source
Le point (.) peut ne pas être considéré comme spécial. J'ai ajouté une condition OR à la réponse de Mozfet & Seagull:
la source
la source
Dont les caractères spéciaux que vous souhaitez supprimer d'une chaîne, préparez une liste d'entre eux, puis utilisez la fonction de remplacement javascript pour supprimer tous les caractères spéciaux.
ou vous pouvez exécuter une boucle pour une chaîne entière et comparer un seul caractère avec le code ASCII et régénérer une nouvelle chaîne.
la source