Comment puis-je supprimer tous les caractères d'une chaîne qui ne sont pas des lettres à l'aide d'un JavaScript RegEx?Comment supprimer tous les caractères d'une chaîne
Répondre
Vous pouvez utiliser la méthode replace
:
'Hey! The #123 sure is fun!'.replace(/[^A-Za-z]+/g, '');
>>> "HeyThesureisfun"
Si vous voulez garder des espaces:
'Hey! The #123 sure is fun!'.replace(/[^A-Za-z\s]+/g, '');
>>> "Hey The sure is fun"
Le regex /[^a-z\s]/gi
revient à dire à tout correspond pas à la lettre az ou un espace (\ s), tout en le faisant globalement (le drapeau g
) et en ignorant le cas de la chaîne (le drapeau i
).
Juste vérifié dans la console et cela a très bien fonctionné. Je me demande s'il voulait garder des espaces. – Nosredna
+1 Mais j'utiliserais l'équivalent un peu plus efficace: 'remplacer (/ [^ A-Za-z \ s] +/g, '');' Cela correspond à plus d'un caractère dans chaque "gulp", et le mode case-sensive peut être légèrement plus rapide avec certains moteurs regex. – ridgerunner
Notez que cela supprimera également les caractères accentués, qui à mon avis sont des lettres. – rds
RegEx propriétés d'instance utilisées g
, i
mondiale: Que ce soit pour tester l'expression régulière contre toutes les correspondances possibles dans une chaîne, ou seulement contre le premier.
ignoreCase: Que ce soit pour ignorer la casse en essayant une correspondance dans une chaîne.
RegEx caractères spéciaux utilisés [a-z]
, +
[^ xyz]: Un caractère niées ou complété ensemble. Autrement dit, il correspond à tout ce qui n'est pas inclus dans les parenthèses. Vous pouvez spécifier une plage de caractères en utilisant un trait d'union.
Par exemple,
[abcd]
est le même que[a-d]
. Ils correspondent au «b» dans «brisket» et le «c» dans «chop».+: Correspond à l'élément précédent 1 fois ou plus. Équivalent à {1,}.
syntaxe méthode JavaScript string replace
str.replace (regexp | substr, newSubStr | fonction [, drapeaux non standard]);
Les drapeaux non standard g
& i
peuvent être transmis dans la syntaxe ou remplacer construit dans le regex. exemples:
var re = /[^a-z]+/gi; var str = "this is a string"; var newstr = str.replace(re, ""); print(newstr);
var str = "this is a string"; var newstr = str.replace(/[^a-z]+/, "", "gi"); print(newstr);
Pour correspondre à des caractères blancs et \ s seraient ajoutés à la regex [^a-z\s]+
.
Les drapeaux sont dans la norme ECMAScript. Mais le troisième argument (flags) de 'String.prototype.replace' \t est [JavaScript-propriétaire] (https://developer.mozilla.org/fr/JavaScript/Reference/Global_Objects/String/replace). Eviter en faveur des drapeaux sur le premier argument (RegExp). – PointedEars
Expressions régulières dans ECMAScript mises en œuvre sont à mon humble avis le mieux expliqué au Mozilla Developer Network (formerly, Mozilla Developer Center) dans le RegExp
article du JavaScript Language Reference pp.
Cependant, comme il est indiqué, les réponses précédentes ne prennent pas non-anglais lettres en compte, tels que les trémas et les lettres accentuées.Afin de ne pas supprimer ces lettres de la chaîne, vous devez les exclure de la gamme de caractères comme ceci:
var s = "Victor 1 jagt 2 zwölf 3 Boxkämpfer 4 quer 5 über 6 den 7 Sylter 8 Deich";
s = s.replace(/[^a-zäöüß]+/gi, "");
Cette approche devient vite fastidieuse et difficile à maintenir, surtout si plusieurs langues naturelles doivent être considéré (et même dans un bon anglais il ya des mots étrangers comme "déjà vu" et "fiancé").
Par conséquent, parmi les autres fonctionnalités PCRE, JSX:regexp.js vous permet d'utiliser des expressions régulières pouvant utiliser des classes de propriétés Unicode, via le Unicode Character Database (UCD).
alors vous write¹
var s = "Victor 1 jagt 2 zwölf 3 Boxkämpfer 4 quer 5 über 6 den 7 Sylter 8 Deich";
var rxNotLetter = new jsx.regexp.RegExp("\\P{Ll}+", "gi");
s = s.replace(rxNotLetter, "");
ou
var s = "El 1 veloz 2 murciélago 3 hindú 4 comía 5 feliz 6 cardillo 7 y 8 kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja"
+ " – Съешь 1 же 2 ещё 3 этих 4 мягких 5 французских 6 булок, да 7 выпей 8 чаю.";
var rxNotLetterOrWhitespace = new jsx.regexp.RegExp("[^\\p{Ll}\\p{Lu}\\s]+", "g");
s = s.replace(rxNotLetterOrWhitespace, "");
pour réduire la dépendance sur les bizarreries majuscules/minuscules de mises en œuvre (et être plus extensible), pour une RegExp
qui exclut tous les non-lettre Caractères Unicode (et espace blanc dans le second exemple).
Assurez-vous de fournir une version de la base de données de caractères Unicode, ainsi, car il est grand, en pleine mutation, et donc pas intégré dans regexp.js (JSX contient un texte verbeux et la version de script compactée l'UCD, les deux peuvent être utilisés, et ce dernier est préféré, par regexp.js). Notez que a conforming ECMAScript implementation does not need to support characters beyond the Basic Multilingual Plane (U+0000 to U+FFFF), donc jsx.regexp.RegExp
ne peuvent actuellement pas les supporter même s'ils sont dans le UCD. Voir la documentation dans le code source pour plus de détails.
Upvoted. C'est un must s'il y a des caractères non anglais! – SoonDead
- 1. Supprimer tous les caractères non-ASCII de la chaîne
- 2. formatage de chaîne, supprimer les caractères principaux
- 3. Supprimer les caractères d'une chaîne dans C
- 4. Comment faire pour supprimer les caractères indésirables d'une chaîne?
- 5. Supprimer les caractères en Python
- 6. Besoin d'aide pour supprimer les caractères étranges de la chaîne
- 7. Comment puis-je supprimer tous les caractères autres que les mots, sauf le saut de ligne?
- 8. Supprimer les caractères en utilisant Regex
- 9. Comment supprimer des caractères particuliers d'une chaîne en utilisant XSLT?
- 10. Suppression de tous les caractères non numériques de la chaîne en Python
- 11. Comment supprimer tous les sujets dans ActiveMQ?
- 12. Comment supprimer les deux premiers et les deux derniers caractères d'une chaîne?
- 13. Comment supprimer tous les n-ième caractères dans le fichier (par lot ou vbs)?
- 14. Comment puis-je supprimer tous les jetons avec des caractères non-mots en Perl?
- 15. Comment gérer tous les caractères ASCII (y compris les caractères spéciaux regex) dans une regex Perl?
- 16. Excel Remplacer tous les caractères trouvés
- 17. Comment supprimer des caractères entre les balises HTML
- 18. Extension de ces expressions régulières pour supprimer tous les caractères spéciaux
- 19. Supprimer tous les enregistrements d'une table
- 20. Supprimer tous les fichiers de svn repository
- 21. Apple Mail ajoute \ n à peu près tous les 72 caractères - comment puis-je les supprimer et préserver \ n réel
- 22. Comment supprimer les caractères invisibles dans t-sql?
- 23. Comment supprimer les cookies de caractères génériques dans Rails?
- 24. Dans Python 2.4, comment puis-je supprimer les caractères après ';'?
- 25. Java regex pour supprimer tous les numéros de fin?
- 26. Aidez-moi à supprimer les trois derniers caractères d'une chaîne s'il vous plaît!
- 27. Remplacer les caractères chaîne du tableau
- 28. Comment supprimer tous les écouteurs d'événement d'un objet d'affichage?
- 29. Comment supprimer tous les sauts de ligne? Je
- 30. Comment supprimer tous les éléments d'un NSTableView contrôlé par NSArrayController?
@RD - Quelle réponse attendez-vous? Je ne pense pas que cela devienne beaucoup plus simple que la réponse de Paolo ... Et quelles "sources crédibles et/ou officielles"!? Cela n'a aucun sens ... – Kobi
une prime n'est pas un bouton "faire tester le code pour moi". – AlfredoVR