2017-07-24 3 views
0

Je suis une chaîne comme:javascript Regex divisé UpperCase de lowerCase

var str = new Array( 
"Inverted HFFSfor Primary Wrap Or Secondary Multi Wrap", 
"HFFSwith PDSPbackgroud Feederlense & Product Alignerigit", 
"HFFSwith Cooler JKLHbetween Feeder & Product Aligner") 

Comment séparer-à-dire

1) HFFSfor pour devenir HFFS pour

2) HFFSwith devenir HFFS avec

3) PDSPbackgroud pour devenir RSDP ANTÉCÉDENTS

4) JKLHbetween pour devenir JKLH entre

... et ainsi de suite

Ma première Instinc était quelque chose comme:

for(var i = 0; i<_str.length; i++){ 
if((/*The needed Regex*/).test(_str[i])){ 


    } 
} 

Pas de succès .... Ne semble pas penser plus loin !!

S'il vous plaît aider, Merci

+0

Vous n'avez pas de '+' après votre plage de majuscules? –

+0

Testé avec.test() toujours pas de succès ... Veuillez retirer votre DownVote. Merci – ErickBest

+0

La méthode '.replace' n'accepte pas les expressions régulières comme argument de remplacement. – revo

Répondre

2

indexOf n'accepte pas RGEX, vous ne pouvez utiliser un .replace comme cela.

Vous pouvez utiliser:

var repl = str.replace(/\B([a-z](?=[A-Z])|[A-Z](?=[a-z]))/g, '$1 '); 

RegEx Demo

RegEx Breakup:

  • \B: Affirme positions où la limite de mot ne pas
  • (: Démarrer la capture groupe # 1
    • [a-z](?=[A-Z]): Associez lettre minuscule s'il y a une lettre majuscule avant
    • |: OU
    • [A-Z](?=[a-z]): Faites correspondre la lettre majuscule s'il y a une lettre minuscule avant
  • ): Groupe de clôture de fin # 1
+1

Cela a fonctionné parfaitement (accepté) ... S'il vous plaît UpVote la question parce que c'est une question valide pour SO. Merci – ErickBest

+1

Merci, j'ai déjà mis votre question sous) – anubhava

1

Vous pouvez essayer cela, les mots de capture qui sont faits de plus d'une des lettres majuscules (comme un groupe) et les lettres minuscules (comme un autre groupe), puis ajouter un espace entre la deux groupes:

var str = new Array( 
 
"Inverted HFFSfor Primary Wrap Or Secondary Multi Wrap", 
 
"HFFSwith PDSPbackgroud Feederlense & Product Alignerigit", 
 
"HFFSwith Cooler JKLHbetween Feeder & Product Aligner") 
 

 
console.log(
 
    str.map(s => s.replace(/([A-Z]{2,})([a-z]+)/g, "$1 $2")) 
 
)