Sebastian: Reguläre Ausdrücke - Eingaben in Textfeld formatieren

Hallo,

mit der folgenden Funktion möchte ich erreichen, dass die Eingabe von Begriffen (Trennzeichen = Komma) in einem Textfeld immer in die Anordnung

Wort, Wort, Wort, Wort Wort Wort, Wort

usw. umformatiert wird, soweit dies nicht bereits so eingegeben wurde.

Am Anfang und Ende der Eingabe sollen nur Buchstaben und Zahlen zulässig sein, als Trennzeichen zwischen den Worten darf nur die Zeichenkombination "Komma - gefolgt von einem Leerzeichen" vorkommen.

Zwischen zwei Kommata dürfen auch mehrere Worte - jeweils durch maximal ein Leerzeichen getrennt - vorkommen.

Unten habe ich die einzelen Schritte der Funktion noch einmal in Klartext umgesetzt.

Frage und Bitte:

Kann man eventuell einzelne Schritte kürzer fassen / zusammenfassen ?
Insbesondere bei Schritt 6 und 7 vermute ich dass ... komme der Sache aber nicht mehr näher !

P.S. Die Funktion tut in ihrer jetzigen Form das, was sie soll. Es geht also ggf. um eine optimierte Schreibweise bzw. alternative Schreibweisen.

Vielen Dank für Hilfe und Anregung

Sebastian

///////////////////////////////////

function test()
{

var wert = document.formularname.textfeld.value;

wert = wert.replace(/^\W+/,'');
wert = wert.replace(/\W+$/,'');

wert = wert.replace(/^\+/,'');
wert = wert.replace(/\
+$/,'');

wert = wert.replace(/\s{2,}/g,' ');

wert = wert.replace(/\s,/g,',');

wert = wert.replace(/,+\s*,*/g,', ');

document.formularname.textfeld.value = wert;

}

///////////////////////////////////

1. Entferne jedes Zeichen am Anfang -außer es ist ein Buchstabe, eine Zahl oder ein Unterstrich
2. Entferne jedes Zeichen am Ende -außer es ist ein Buchstabe, eine Zahl oder ein Unterstrich

3. Entferne einen Unterstrich am Anfang
4. Entferne einen Unterstrich am Ende

5. Ersetze ein zweimal oder mehrfach vorkommendes Leerzeichen durch ein Leerzeichen

6. Ersetze die Zeichenkombination "Leerzeichen - gefolgt von einem Komma" durch ein Komma

7. Ersetze die Zeichenkombination "einmal oder mehrfach vorkommendes Komma - gefolgt von keinem oder mehrfach vorkommendem Leerzeichen - gefolgt von keinem oder mehrfach vorkommendem Komma" durch die Zeichenkombination "Komma - gefolgt von einem Leerzeichen

  1. Hallo,

    ich kenne die genauen Rahmenbedingungen nicht, aber ich habe einmal eine kurze Variante geschrieben, die Dir vielleicht hilft:

    var testText = " wort_1 bla, foo,,bar , ,, letztes_wort  ";
    var cleanText = '';
    words = testText.match(/\b(\w+)\b/g, '$1');
    for(var i=0; i<words.length; i++) {
     cleanText += ((i>0)? ', ' : '') + words[i];
    }
    alert(cleanText);

    Ciao,
    Andreas

    1. words = testText.match(/\b(\w+)\b/g, '$1');

      Muß heißen: var words = testText.match(/\b(\w+)\b/g);

      ;)

  2. Hi,

    Mein Vorschlag:

    var str = "  , bla,, blubb  , safsadf,   a,,,, asdfsadf ";  
      
    var str2 = str.split(/\W+/);      //aufteilen an jeder Gruppe von nicht-Wort-Zeichen  
    if (str2[0] == "")                //ggf. leeres erstes Element entfernen  
        str2.shift();  
    if (str2[str2.length - 1] == "")  //ggf. leeres letztes Element entfernen  
        str2.pop();  
    str2.join(", ");                  //alles zusammenfügen mit Komma-Leerzeichen  
      
    alert(str2);
    

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.