1
votes

Besoin de supprimer les espaces entre deux symboles

Besoin de supprimer les espaces entre deux deux points. Ainsi, la sortie de : test: serait : test: . Je l'ai pour détecter tout ce qui se trouve entre :: mais maintenant j'en ai besoin pour ne correspondre qu'à l'espace blanc. C'est le regex qui correspond à tout: (?<=\:)(.*?)(?=\:)


2 commentaires

Avez-vous seulement besoin de supprimer les espaces autour du mot, ou peut-il y avoir des espaces au milieu qui doivent également être supprimés? Est-ce que : word1 word2: devient : word1word2: ?


@Barmar cela n'a vraiment pas d'importance dans mon contexte car il n'y aura que des mots simples.


5 Réponses :


0
votes

Utilisez Remplacer et capturer le groupe

let str = ': test :'

let op = str.replace(/(:)\s+(.*?)\s+(:)/g, "$1$2$3")
let op1 = str.replace(/:(.*?):/g,':$1:' )

console.log(op);
console.log(op1)


1 commentaires

le vôtre supprime également les deux points



1
votes

Essayez ceci

let a = ": test :".replace(/ /g,'')

console.log(a);

": test :".replace(/ /g,'')

Si vous ne voulez supprimer que les espaces de la chaîne, utilisez simplement

let a = ": test :".replace(/: *(.*?) *:/g,":$1:")

console.log(a);

": test :".replace(/: *(.*?) *:/g,":$1:")


0 commentaires

0
votes

L'expression régulière suivante supprimera tous les caractères d'espace d'une chaîne. \ s représente tout type de caractère "espace", y compris les tabulations. le drapeau «g» effectuera plusieurs correspondances.

let text = ': test :'
let textWithoutSpaces = text.replace(/\s/g, '');
// textWithoutSpaces === ':test:'


0 commentaires

2
votes

Essayez de capturer deux points et replace():

var str = `fbflb : vfkvbfkvb : otjtjb : hih igvjyfv ugukgu ugug `

var rgx = /\s*(:)\s*/gi;

var res = str.replace(rgx, '$1');

console.log(res);

Demo

/\s*(:)\s*/gi


2 commentaires

Vous pouvez améliorer votre expression régulière de cette manière: ": test:". Replace (/ *: * / g, ':')


@ KamilKiełczewski votre amélioration est plus simple, mais je voulais montrer au PO l'utilisation des groupes de capture.



0
votes

Utilisez

var s = " test : test : test";
console.log(
  s.replace(/:[^:]+:/g, function (m) { return m.replace(/\s+/g, ''); })
)

  • /: [^:] +: / g - correspond à toutes les sous-chaînes qui commencent par : , puis ont 1+ caractères autres que : code > puis :
  • m est le texte correspondant trouvé, il est passé à la méthode de rappel dans la méthode replace
  • m.replace (/ \ s + / g, '') supprime tous les 1+ caractères d'espacement consécutifs à l'intérieur de cette correspondance, et après cela, le texte est renvoyé et collé dans le résultat.


0 commentaires