2016-05-13 8 views
1

Ich habe diese regex, die Text in Klammern entspricht:Regular Expression Klammern und Klammern für JavaScript passen

/\([^\)]*?\)/g 

Ich möchte beide Klammern entsprechen zu können und Klammern, so dass es die beiden Klammern und Klammern in ein erkennt Schnur, damit ich es färben kann.

Dies sollte die Zeichenfolge:

The (quick) brown [fox] 

Ich will Farbe (quick) und [fox] so muss ich die Regex beide Klammern und Klammern entsprechen.

Danke.

+0

Wie wäre es mit '/ [(\ [] [^ \] \]] *? [) \]]/G'? – ClasG

Antwort

5

Dies sollte funktionieren:

/\([^)]*\)|\[[^\]]*\]/g; 

es unten ausprobieren:

var str = "The (quick) brown [fox]"; 
 

 
var re = /\([^)]*\)|\[[^\]]*\]/g; 
 

 
str.match(re).forEach(function(m) { 
 
    document.body.insertAdjacentHTML('beforeend', m + '<br>'); 
 
});

Regex101

+1

fügen Sie den Nicht-Gier-Operator '?' Direkt nach '*' hinzu. – RomanPerekhrest

+0

@RomanPerekrest Danke für Ihre Eingabe. Können Sie ein Beispiel angeben, in dem ich den faulen Operator angeben muss? Ich kann mir keinen vorstellen. – timolawl

+0

ist es nicht schwer. "Der (schnelle) braune [Fuchs] Der (schnelle) braune [Fuchs] Der (schnelle) braune [Fuchs] Der (schnelle) braune [Fuchs]" '. Zögst du immer noch über "faulen" Operator? – RomanPerekhrest

0

Das ist es:

\(\w+\)|\[\w+\]

Sie können es here testen.

+0

'\ w' bricht Sonderzeichen wie á oder ñ. – JulianSoto

0

Diese Regex

/[(\[][^\)\]]*?[)\]]/g 

es für Sie tun sollten. Es würde jedoch erlauben, solche Klammern zu mischen.

The (quick] brown [fox) 

See it here at regex101.

+0

Wie wäre es mit dieser Saite '" Die (schnelle) braune [Fuchs) "'? – RomanPerekhrest

+0

@RomanPerekrest Was ist damit? Wie gesagt, es werden alle Wörter (oder Phrasen) in eckigen Klammern, alle von '[' '' '' ' – ClasG

+0

es wird es mischen, ohne zu bestimmen, welche nur mit Klammern gewickelt, und Hexe - mit Klammern nur – RomanPerekhrest