Je suis un peu coincé sur un problème avec regex

Voici ma chaîne: &Biblioteks&klasse &Test something & something

Voici mon résultat attendu: Biblioteksklasse Test something & something

Voici mon résultat réel: Biblioteksklasse Test something something

Voici mon expression régulière: /^&|(?=\D)&/

Quelqu'un sait comment je peux arriver à mon résultat réel?

0
Christian Moen 20 nov. 2018 à 15:18

3 réponses

Meilleure réponse

Vous semblez vouloir supprimer & s'il se trouve à côté d'un mot char.

Dans ce cas, utilisez

s.replace(/&\b|\b&/g, '')

Voir cette démo regex. &\b correspond à & qui est suivi d'un mot char (lettre, chiffre ou _) et \b& correspond à & qui est précédé d'un mot char.

Si vous prévoyez de le supprimer lorsqu'il se trouve à côté d'un caractère autre qu'un espace, utilisez

s.replace(/&(?=\S)|(\S)&/g, '$1')

Voir cette démo regex. Ça correspond:

  • &(?=\S) - un & suivi d'un caractère non blanc
  • | - ou
  • (\S) - Groupe 1 (appelé plus tard avec $1 du modèle de remplacement): tout caractère non blanc
  • & - un & caractère.
2
Wiktor Stribiżew 20 nov. 2018 à 12:26

Vous pouvez utiliser cette expression régulière simple:

&(?=\w)

Il correspond à un '&' et regarde vers l'avenir pour s'assurer qu'il est suivi d'un caractère Word.

Ensuite, vous replace avec un empty string.

Comment utiliser:

var text = '&Biblioteks&klasse &Test something & something';
var regex = /&(?=\w)/g;
var output = regex.replace(text, '');
1
Poul Bak 20 nov. 2018 à 12:30

En regardant derrière, vous pourriez écrire:

/(&(?=\w)|(?<=\w)&)/
1
Rolvernew 20 nov. 2018 à 12:26