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: (?<=\:)(.*?)(?=\:)
5 Réponses :
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)
le vôtre supprime également les deux points
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:")
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:'
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);
/\s*(:)\s*/gi
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.
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.
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.