• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

JS match regex variable

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
Hey Leute,

[src=javascript]var string = "Menschen";
var pattern = "Mensch";

if(string.match(pattern)) {alert('Treffer');}[/src]

In diesem Beispiel landet er einen Treffer. Gibt es eine unkomplizierte Möglichkeit, dass er nur nach GENAU dem String sucht, der hinter der Variable pattern steckt? Ich denke, dass ich reguläre Ausdrücke brauche, vor denen es mir aber immer graut. :confused:
 

Jester

★★★★☆ (Kasparski)

Registriert
1 Dez. 2014
Beiträge
6.059
Ort
Code Azure
if(string === pattern){}

Genau in diesem Fall brauchst keine RegEx. Der identity-Operator (===) ist theoretisch nicht nötig, verhindert aber eine eventuelle Type Conversion, ist daher performanter & gleich auch noch sicherer, falls aufgrund der Ausgangsdaten eine Typkollision auftritt.

Wenn Du es mit RegEx machen willst, funktioniert das so:
var pattern = /^Mensch$/;

Das "^" bedeutet, der Begriff muss am Anfang der geprüften Zeichenkette stehen, das "$" bedeutet genau das Gegenteil, also der Suchbegriff muss am Ende des Strings stehen.

Die Literal-Schreibweise in "/" erfordert keine Anführungszeichen und ist dem "var foo = new RegExp('')" vorzuziehen.
 
Zuletzt bearbeitet:

nietaL

NGBler

Registriert
8 Sep. 2013
Beiträge
231
Ort
Exilgullianer
  • Thread Starter Thread Starter
  • #3
Danke!

Ich muss noch etwas ausholen. Es gibt ein Array:

[src=javascript]var soldaten = ["Schütze (3)", "Scharfschütze", "Panzeranwehr (4)", "Sanitäter"];[/src]

Wie man sieht, haben die Einträge ab und an eine Zahl in Klammern dahinter. Wenn ich jetzt auf einen Eintrag prüfen möchte, habe ich aber nur die reinen Namen zur Verfügung: z.B. Schütze (ohne Klammern dahinter)

[src=javascript]function (name)
{
for(var i=0; i < soldaten.length-1; i++) // Array durchlaufen
{
if(soldaten.match(name)) // im Array nach Namen suchen
{
soldaten.splice(i,1); // Treffer aus Array entfernen
}
}
}[/src]

Wenn ich einen direkten Vergleich mit = durchführe, wie von dir vorgeschlagen, findet er bei name="Schütze" eben nicht "Schütze (3)". Mache ich ein match(name), wie in meinem Code, findet er zwar "Schütze (3)" aber auch gleich "Scharfschütze" wegen des Teilstrings -schütze.
 

theSplit

1998
Veteran Barkeeper

Registriert
3 Aug. 2014
Beiträge
28.561
Kannst du in dem Array Soldaten nicht alle Werte als Regex mit;
/^MeinText$/

schreiben und darauf überprüfen?
 

Rakorium-M

NGBler

Registriert
14 Juli 2013
Beiträge
413
Du willst also testen, ob ein String mit [kw]Schütze[/kw] beginnt? Geht ganz einfach: [src=javascript]if (soldat.indexOf('Schütze') === 0) // ohne Regex
if (soldat.match(/^Schütze/)) // oder auch mit Regex[/src]
 
Oben