2016-05-19 4 views
0

Ich habe eine Zeichenfolge wie unten.Match die Alphabete innerhalb der Zeichenfolge.Das Ergebnis ist x,x,x,y,y,y .Die x, y wiederholen dreimal.Meine Frage ist, wie ersetzen wiederholt gleichen Wert mit einem Wert. Ich brauche ah Antwort wie x,y.Vergleichen Sie die mehreren Werte und ersetzen Sie die wiederholten Werte mit einem Wert

function myFunction() { 
 
    var str = "-10x+10x-10x-10y+6y-8y"; 
 
    var result = str.match(/[a-z]/g); 
 
    document.getElementById("demo").innerHTML = result; 
 
}
<button onclick="myFunction()">Try it</button> 
 
<p id="demo"></p>

Antwort

2

Verwenden negative look ahead assertion

function myFunction() { 
 
    var str = "-10x+10x-10x-10y+6y-8y"; 
 
    var result = str.match(/([a-z])(?!.*\1)/g); 
 
    document.getElementById("demo").innerHTML = result; 
 
}
<button onclick="myFunction()">Try it</button> 
 

 
<p id="demo"></p>


Regex explanation here

Regular expression visualization

+0

Danke c @pranav balan.können Sie die Regex erklären? – prasanth

+0

@prasanthsadhana https://regex101.com/r/dX4nB3/1 –

+0

@PranavCBalan wird dies das gleiche beabsichtigte Ergebnis geben, wenn x und y nicht immer zusammen sind? – gurvinder372

1

Um die einzigartigen Variablennamen zu erhalten, können Sie diese Zeile nach dem regulären Ausdruck hinzufügen

var map = {}; 
result.forEach(function(val){ map[val] = true }); 
result = Object.keys(map) 

DEMO

var str = "-10x+10x-10x-10y+6y-8y"; 
 
    var result = str.match(/[a-z]/g); 
 
    var map = {}; 
 
    result.forEach(function(val){ map[val] = true }); 
 
    result = Object.keys(map); 
 
    document.body.innerHTML += JSON.stringify(result, 0, 4)