2016-06-10 12 views
1

Ich habe eine Zeichenfolge, und ich möchte ## @@ ## @@ in dieser Zeichenfolge zu einem Wagenrücklauf Zeilenvorschub mit Regex ersetzen.Übereinstimmende Regex-Bedingung

Ich habe versucht, aber habe nicht viel Glück gehabt. Mein Ausdruck zeigt den vollständigen Text an.

Expression:/^.*(##@@##@@).*$/g

String: Dies ist mein Name ## @@ ## @@ ## @@ ## @@ und Identität

Code: str = str.replace (/ ^. (## @@ ## @@). $/g, '\ r \ n');

Wie kann ich erreichen, was ich versuche zu tun?

+0

Was versuchst du genau zu machen? – thepio

Antwort

2

Sie arbeiten zu hart. :-) Verlieren die ^.* und die .*$:

var str = "This is my name ##@@##@@ ##@@##@@ and identity"; 
 
str = str.replace(/##@@##@@/g, '\r\n'); 
 
console.log(str);

str.replace(/##@@##@@/g, '\r\n') sagt "##@@##@@ global in str mit \r\n die Zeichenfolge ersetzen". In diesem Beispiel werden Sie mit zwei Ersetzungen (mit einem Leerzeichen zwischen), weil es zwei Mal auftritt.

Wenn Sie Leerzeichen zwischen dem Auftreten ignorieren wollen und was slike ersetzen ##@@##@@ ##@@##@@ mit nur ein\r\n, dann müssen wir es leicht anpassen:

var str = "This is my name ##@@##@@ ##@@##@@ and identity"; 
 
str = str.replace(/(?:##@@##@@\s*)+/g, '\r\n'); 
 
console.log(str);

.replace(/(?:##@@##@@\s*)+/, '\r\n') sagt: „Replace ein oder mehrere Vorkommen von ##@@##@@ gefolgt von optionalen Leerzeichen (\s = Leerzeichen, * = optional) mit \r\n. " Die (?:...) gruppiert es zusammen, so dass die + ("eine oder mehrere der letzten Sache") auf die ganze Sache angewendet werden kann. Es ist eine nicht einfangende Gruppe.

+0

Das ist hervorragend. Ich muss meine Regex-Fähigkeiten wirklich auf den neuesten Stand bringen. Gibt es einen Raum, in dem du dich bei Regex trainiert hast? Wenn ja, würde ich gerne wissen :) – Neophile

+1

@IK: Froh, dass geholfen hat! Ich habe sie nicht wirklich irgendwo oder auf irgendeine organisierte Weise gelernt. Aber hier sind ein paar gute Ressourcen: [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) und http://regex101.com Auch, fast alles, was Sie sehen von Steven Levithan im Internet über reguläre Ausdrücke ist wahrscheinlich eine solide Information. –

Verwandte Themen