2016-09-06 2 views
0

Ich versuche, den Wert eines <select></select> Tags als festgelegt aus dem ausgewählten <option> Wert zu erhalten und alle Leerzeichen in dem Wert durch einen Bindestrich zu ersetzen. im Moment bin ich gerade dann console.log() der Wert für die Prüfung, aber aus irgendeinem Grund anstelle der Auswahl von Leerzeichen wählt und ersetzt Kleinbuchstaben "s". Der Code Ich verwende ist: <select onchange='var cat = this.value; var modi = cat.replace(/\s/g , "-"); console.log(modi);'>Javascript Regex Whitespace Replacement

Beispiel: zum Beispiel übernehmen die this.value gleich "Testwert"

Ausgang: te-t-Wert Erwartete Ausgabe: Test-Wert

+0

Tipp für Fragen wie diese stellen: Nicht für reguläre Ausdrücke fragen. Sie müssen eine Art Textmanipulation durchführen, die besser mit anderen Mitteln bedient werden könnte. Erwägen Sie die Frage zu "Wie kann ich Leerzeichen in einem HTML-Optionselement ersetzen?" –

+0

Dank @RayToal das ist ein guter Punkt, es war mehr zu sehen, wenn ich etwas in meinem Regex verpasste, wurde ich so geblendet durch die Frustration, immer und immer wieder zu lesen, dass es funktionieren sollte, dass ich vergaß, Alternative zu betrachten . – brodiemigas

+0

Der Code in Ihrer Frage scheint zu funktionieren (https://jsfiddle.net/bxqabgc9/1/) (in Chrome sowieso). Da Sie sagen, dass das Literal "s" ersetzt wurde, frage ich mich, ob dies daran liegt, dass einige Browser die Zeichenfolge analysieren, die das 'onchange' Attribut ist - mit welchem ​​Browser haben Sie getestet? – nnnnnn

Antwort

4

Versuchen Sie, diese

cat.split(" ").join("-"); 
+0

Warum würde das funktionieren, wenn 'cat.replace (/ \ s/g," - ");' nicht funktioniert? – nnnnnn

+0

Das hat perfekt funktioniert! Danke, ich weiß nicht, warum ich nicht daran gedacht habe, ich bin so weit unten im Regex-Kaninchenloch, dass ich ein paar grundlegende Javascript vergessen habe, die ich vorher benutzt habe! Ich frage mich, warum das funktioniert und die Regex nicht. – brodiemigas

1

var str = "test value"; 
 
str = str.replace(/ /g,"-"); 
 
alert(str);

+0

Warum sollte '//g' funktionieren, wenn'/\ s/g' nicht funktioniert? – nnnnnn

+0

Da gibt es kein Muster in/\/s/g zu finden während – Developer

+0

Lassen Sie mich das anders sagen: ['/ \ s/g' funktioniert] (https://jsfiddle.net/bxqabgc9/). – nnnnnn

1

Probieren Sie diese Methode

var reg = new RegExp(" ","g"); 
1

Versuchen Sie, diese

function myFunction() { 
     var str = "Is this all there is?"; 
     var patt1 =//g; 
     var result = str.replace(patt1,"-");    
    } 
+1

Warum sollte '//g' funktionieren, wenn'/\ s/g' nicht funktioniert? – nnnnnn

Verwandte Themen