2
votes

JavaScript: Ajouter un espace entre Char et Number avec Regex

Bonjour, j'ai un numéro de plaque BZ8345LK et je veux le convertir en BZ 8345 LK (en ajoutant un espace entre le caractère et le nombre).

J'ai essayé avec ce Regex mais pas travail, seulement espace premier caractère avec nombre. Ex BZ 8345LK , le ' LK ' ne garde pas d'espace avec le nombre.

var str = 'BZ8345LK';
str.replace(/[^0-9](?=[0-9])/g, '$& ');
# return BZ 8345LK, I want BZ 8345 LK


1 commentaires

4 Réponses :


2
votes

Vous devriez alterner avec l'autre possibilité, qu'un nombre soit suivi d'un non-nombre:

var str = 'BZ8345LK';
console.log(str.replace(/[^0-9](?=[0-9])|[0-9](?=[^0-9])/g, '$& '));


1 commentaires

S'il est utilisé dans la saisie de texte avec onChange, ce code ajoute plus d'espace supplémentaire à chaque caractère et nombre.



6
votes

Vous pouvez utiliser cette expression régulière

let str = 'BZ8345LK'

let op = str.replace(/[a-z](?=\d)|\d(?=[a-z])/gi, '$& ')

console.log(op)
  • [a-z] (? = \ d) - Correspond à n'importe quel alphabet suivi d'un chiffre
  • | - Alternance identique au OU logique
  • \ d (? = [a-z]) - Tout chiffre suivi de l'alphabet

[a-z](?=\d)|\d(?=[a-z])


5 commentaires

Ce meilleur choix dans la saisie de texte dynamique comme sur le changement.


Pouvez-vous forcer la suppression d'espace supplémentaire dans le nombre BZ 83 45 LK à BZ 8345 LK


Si le format numérique BZ83 45LK , comment conserver la sortie BZ 8345 LK


@Puyup Tout d'abord supprimez les espaces , puis utilisez la réponse.


@Puyup vous pouvez simplement supprimer tout l'espace str.replace (/ \ s + / g, '')



0
votes

Une autre option consiste à utiliser:

const str = 'BZ8345LK'
let answer = str.replace(/^[^\d]+|[\d]{4}/gi, '$& ')
console.log(answer)

Rechercher tout caractère non numérique [^ \ d] suivi de 4 numériques [\ d] {4} caractères

^[^\d]+|[\d]{4}


0 commentaires

0
votes

Essayez avec ceci

​​

var str = "BZ8345LK";
var result = str.replace(/([A-Z]+)(\d+)([A-Z]+)/, "$1 $2 $3");
console.log(result);


0 commentaires