2017-12-10 1 views
0

Ich möchte Zeichenfolge zwischen zwei Zeichenfolge mit Regex einschließlich Zeilenumbrüche übereinstimmen.Regex JS: Passende Zeichenfolge zwischen zwei Zeichenfolgen einschließlich Zeilenumbrüche

Zum Beispiel, ich habe die nächste Saite:

{count, plural, 
    one {apple} 
    other {apples} 
} 

Ich brauche Zeichenfolge zwischen plural, und one zu bekommen. Es wird sein. Ich habe versucht, diese Regex:

/(?:plural,)(.*?)(?:one)/gs 

Es funktioniert, aber nicht in JS. Wie mache ich das mit JavaScript?

Antwort

3

das alles, einschließlich Newline Zeichen zu finden, Sie [\s\S] oder [^]

var str = `{count, plural, 
 
    one {apple} 
 
    other {apples} 
 
} `; 
 
console.log(str.match(/(?:plural,)([\s\S]*?)(?:one)/g)); 
 
console.log(str.match(/(?:plural,)([^]*?)(?:one)/g));

+0

'm' ist hier überflüssig. – revo

+0

Ja, 'm' ist überflüssig Danke, dass Sie darauf hingewiesen haben. Kennst du den Grund? –

+2

Einfach weil 'm' den Mittelwert der'^'/' $ '-Anker als Start/Ende der Betreffzeile (Standardverhalten) oder Anfang/Ende der Zeile darstellt. Ich denke, was Sie als Multi-Line bezeichnen, ist die dotall 's Flagge, die' .' ermöglicht, auch Newline-Zeichen zu akzeptieren. Da "s" nicht unterstützt wird, wird es hoffentlich mit ES2018 ausgeliefert. – revo

1

Es Ihre Tests mit der falschen Regex-Engine, weil nicht funktioniert verwenden können.

`/s` does not exist in the JS regex engine, only in pcre 

Es muss wie etwas sein:

/(?:plural,)((.|\n)*?)(?:one)/g 

Hoffe, es hilft.

Verwandte Themen