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 />† bbbb<br />‡ 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 \/>&#?[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 \/>&#?[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 \/>&#?[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 \/>&#?[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 \/>&#?[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!