Reguläre Ausdrücke - Eingaben in Textfeld formatieren
Sebastian
- javascript
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
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
words = testText.match(/\b(\w+)\b/g, '$1');
Muß heißen: var words = testText.match(/\b(\w+)\b/g);
;)
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