Je voulais remplacer tous les caractères sauf ses 5 derniers caractères et les espaces par +

var str = "HFGR56 GGKDJ JGGHG JGJGIR"
var returnstr = str.replace(/\d+(?=\d{4})/, '+');

le résultat devrait être "++++++ ++++ +++++ JGJGIR" mais dans le code ci-dessus, je ne sais pas comment exclure les espaces blancs

3
Newboy11 3 nov. 2019 à 16:51

2 réponses

Vous devez faire correspondre chaque caractère individuellement, et vous devez autoriser une correspondance uniquement si plus de six caractères de ce type suivent.

Je suppose que vous souhaitez remplacer les caractères alphanumériques. Ceux-ci peuvent être mis en correspondance par \w. Tous les autres personnages seront mis en correspondance par \W.

Cela nous donne:

returnstr = str.replace(/\w(?=(?:\W*\w){6})/g, "+");

Essaye-le en direct sur regex101.com .

3
Tim Pietzcker 3 nov. 2019 à 13:59

Vous pouvez utiliser l'anticipation négative avec l'ancre de fin de chaîne.

\w(?!\w{0,5}$)

Correspond à tout caractère de mot qui n'est pas suivi de 0 to 5 caractères et de fin de chaîne.

var str = "HFGR56 GGKDJ JGGHG JGJGIR"
var returnstr = str.replace(/\w(?!\w{0,5}$)/g, '+');

console.log(returnstr)
0
Code Maniac 3 nov. 2019 à 19:09