Maison >interface Web >js tutoriel >Comment puis-je conserver les délimiteurs lors du fractionnement de chaînes en JavaScript à l'aide d'expressions régulières ?

Comment puis-je conserver les délimiteurs lors du fractionnement de chaînes en JavaScript à l'aide d'expressions régulières ?

DDD
DDDoriginal
2024-11-28 16:31:20487parcourir

How Can I Preserve Delimiters When Splitting Strings in JavaScript Using Regular Expressions?

Préserver les délimiteurs lors du fractionnement de chaînes en JavaScript avec RegExp

Le fractionnement d'une chaîne en segments à l'aide d'expressions régulières (RegExp) est une tâche courante en JavaScript . Cependant, il est parfois souhaitable de conserver les délimiteurs utilisés pour le fractionnement.

Considérez la chaîne suivante :

aaaaaa<br />&dagger; bbbb<br />&Dagger; cccc

Supposons que vous souhaitiez diviser cette chaîne au niveau
délimiteur, suivi d'un caractère spécial († ou ‡). La RegExp suivante peut être utilisée :

string.split(/<br \/>&amp;#?[a-zA-Z0-9]+;/g);

Pendant que cette RegExp accomplit la tâche de fractionnement, elle supprime le
délimiteur. Cela peut être indésirable dans certains scénarios.

Pour conserver les délimiteurs, diverses options peuvent être utilisées, comme illustré ci-dessous :

string.split(/(<br \/>&amp;#?[a-zA-Z0-9]+;)/g);

En mettant le délimiteur entre parenthèses, les délimiteurs sont capturés comme séparer les éléments dans le tableau résultant.

Une autre approche consiste à utiliser une anticipation positive assertion :

string.split(/(?=<br \/>&amp;#?[a-zA-Z0-9]+;)/g);

Cette assertion correspond à la position immédiatement avant le délimiteur sans réellement consommer le délimiteur.

Alternativement, une assertion négative de type lookbehind peut être utilisée :

string.split(/(?!<br \/>&amp;#?[a-zA-Z0-9]+;)/g);

Cette assertion correspond à la position immédiatement après le délimiteur sans la consommer.

De plus, un régulier expression peut être utilisée pour capturer la partie de la chaîne avant le délimiteur :

string.split(/(.*?<br \/>&amp;#?[a-zA-Z0-9]+;)/g);

Cela capture tout jusqu'au délimiteur.

Lorsqu'il s'agit de chemins, une considération particulière est nécessaire pour préserver Barres obliques de répertoire :

var str = 'Animation/rawr/javascript.js';
var tokens = str.match(/[^\/]+\/?|\//g);

Cette RegExp garantit que les barres obliques suivant les répertoires sont également capturées.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn