Ich versuche, mit einem regulären Ausdruck zu kommen, den folgenden einfängt:javascript regex Backslash Ausgabe
var testString = "one . one\.two . one\.two\.three" ;
testString.match(/(\\\.)|([^\.\[\]\s]+)/g );
oder vielleicht mit doppelseitigem Schrägstrich:
var testString = "one . one\\.two . one\\.two\\.three" ;
testString.match(/(\\\.)|([^\.\[\]\s]+)/g );
und ergäbe:
ein
eins \ .two
ein \ .two \ .Drei
oder noch besser, die Beseitigung der Schrägstriche:
ein
one.two
one.two.three
Aber ich bin mir nicht sicher wie man nach einem Punkt sucht, aber einen nach einem Backslash folgenden Punkt ignoriert.
Mit anderen Worten, ich versuche manuell einen Objektpfad zu erstellen. wenn der Weg etwas sah wie folgt aus:
myObject.one.one_two.one_two_three
wäre es einfach, aber mein Objektebene-Namen haben Periode Zeichen in ihnen.
Ich versuche also, eine Zeichenfolge nach Perioden zu teilen, die nicht rückgestrichen sind.
Ich hoffe, das macht Sinn. Danke euch allen.
Die Backslashes in der ursprünglichen Zeichenfolge sind nur in Ihrer Notation vorhanden, nicht in der tatsächlichen Zeichenfolge. Ob Sie sie aus der ursprünglichen Zeichenfolgenschreibweise entfernen oder nicht, es ist dieselbe Zeichenfolge. Es gibt also keine Möglichkeit zu erkennen, ob Sie einen Backslash in Ihrer Notation haben oder nicht.Wenn Sie sie in Ihrer Zeichenkette haben wollen, müssen Sie sie in Ihrer Notation verdoppeln. – trincot
Ist etwas falsch mit 'testString.split (/ \ s + \. \ S + /)'? Um dann die umgekehrten Schrägstriche zu entfernen (wenn sie physische Backslashes sind), '.map (x => x.replace (" \\ "," "))? Übrigens, gibt es einen Grund, warum Sie sich auf Rückwärtsreferenzen im Titel beziehen Post-Punkt, aber was ist der Zweck von 'String()' hier? –
Wie @trincot weist darauf hin, müssen Sie zwischen der Verwendung eines umgekehrten Schrägstrichs in der Notation für ein String-Literal zu entkommen Zeichen unterscheiden, und tatsächliche umgekehrte Schrägstriche in der Zeichenkette. Die Zeichenfolgenliteralschreibweise 'var testString =" eins. eins \ .zwei. eins \ .zwei \ .three ";' ergibt eine Zeichenkette "eins. eins. zwei. eins. drei." Die String-Literalnotation 'var testString =" Eins. Eins \\ Zwei. Eins \\. Zwei \\. Drei ";' ergibt eine Zeichenkette 'Eins. Eins \ .zwei. Eins \ .zwei \ .drei' , wobei die umgekehrten Schrägstriche tatsächliche Backslash-Zeichen innerhalb des String-Wertes sind. –