Ich habe eine Zeichenfolge:
var string = "aaaaaa<br />† bbbb<br />‡ cccc"
Und ich möchte diese Zeichenfolge mit dem Trennzeichen <br />
gefolgt von einem Sonderzeichen teilen .
Um das zu tun, benutze ich Folgendes:
string.split(/<br \/>&#?[a-zA-Z0-9]+;/g);
Ich bekomme, was ich brauche, außer dass ich das Trennzeichen verliere. Hier ist das Beispiel: http://jsfiddle.net/JwrZ6/1/
Wie kann ich das Trennzeichen behalten?
javascript
regex
Miloš
quelle
quelle
var delim = "<br/>";
?Antworten:
Verwenden Sie (positives) Lookahead, damit der reguläre Ausdruck bestätigt, dass das Sonderzeichen vorhanden ist, aber nicht mit ihm übereinstimmt:
Sehen Sie es in Aktion:
quelle
0
am Ende jeder Zeichenfolge ein hinzuIch hatte ein ähnliches, aber leicht unterschiedliches Problem. Hier sind Beispiele für drei verschiedene Szenarien, in denen der Deliminator aufbewahrt werden soll.
Warnung: Die vierte Funktion funktioniert nur zum Teilen einzelner Zeichen. ConnorsFan bietet eine Alternative :
quelle
g
ein , das Ende.match
nicht gierigen Lösung für diese Beispiele:"11、22、33".match(/.*?、|.+$/g)
->["11、", "22、", "33"]
. Der/g
Notenmodifikator ist entscheidend für die Übereinstimmung.Wenn Sie das Trennzeichen in Klammern setzen, ist es Teil des zurückgegebenen Arrays.
Abhängig davon, welchen Teil Sie behalten möchten, ändern Sie die Untergruppe, mit der Sie übereinstimmen
Sie können den Ausdruck verbessern, indem Sie den Fall der Buchstaben string.split (/ () & #? [A-z0-9] +; / gi) ignorieren.
Und Sie können für vordefinierte Gruppen wie diese übereinstimmen:
\d
gleich[0-9]
und\w
gleich[a-zA-Z0-9_]
. Dies bedeutet, dass Ihr Ausdruck so aussehen könnte.Es gibt eine gute Regular Expression Referenz auf JavaScriptKit .
quelle
beantwortete es hier auch JavaScript Split Regular Expression behalten das Trennzeichen
Verwenden Sie das Lookahead-Muster (? = Muster) im Regex-Beispiel
Dadurch erhalten Sie das folgende Ergebnis.
Kann auch direkt aufgeteilt werden
das gleiche Ergebnis geben
quelle
Eine Erweiterungsfunktion teilt eine Zeichenfolge mit einem Teilstring oder RegEx und das Trennzeichen wird gemäß dem zweiten Parameter vor oder hinter dem Parameter gesetzt.
Der Test:
quelle
Ich habe Jichis Antwort geändert und in eine Funktion eingefügt, die auch mehrere Buchstaben unterstützt.
jichis Antworten Die dritte Methode würde in dieser Funktion nicht funktionieren, also habe ich die vierte Methode gewählt und die leeren Leerzeichen entfernt, um das gleiche Ergebnis zu erzielen.
edit: zweite Methode, die ein Array zum Teilen von char1 oder char2 ausnimmt
Verwendung:
quelle
Ich habe dies verwendet:
Abgesehen davon, dass Sie sich nicht damit anlegen sollten
String.prototype
, hier eine Funktionsversion:So könnten Sie tun:
Und am Ende haben Sie:
quelle