Regulärer Ausdruck, um eine Zeichenfolge zwischen Klammern in Javascript zu erhalten

Lesezeit: 4 Minuten

Regularer Ausdruck um eine Zeichenfolge zwischen Klammern in Javascript zu
Okay

Ich versuche, einen regulären Ausdruck zu schreiben, der eine Zeichenfolge zurückgibt, die zwischen Klammern steht. Zum Beispiel: Ich möchte die Zeichenfolge erhalten, die sich zwischen den Zeichenfolgen “(” und “)” befindet.

I expect five hundred dollars ($500).

würden zurückkehren

$500

Regulären Ausdruck gefunden, um eine Zeichenfolge zwischen zwei Zeichenfolgen in Javascript zu erhalten

Aber ich bin neu mit Regex. Ich weiß nicht, wie man ‘(‘, ‘)’ in Regexp verwendet

  • mögliches Duplikat des regulären Ausdrucks, um eine Zeichenfolge zu finden, die zwischen zwei Zeichen eingeschlossen ist, während die Trennzeichen AUSGESCHLOSSEN werden

    – Ro Yo Mi

    22. Juli 2013 um 4:27 Uhr

  • Sie können die folgende Lösung von go-oleg verwenden, die leicht modifiziert wurde, um das Dollarzeichen zu testen: var regExp = /\(\$([^)]+)\)/;

    – Domtag

    22. Juli 2013 um 4:44 Uhr

  • Wäre schön zu sehen, was du bisher probiert hast.

    – Scipion

    3. September 2020 um 9:22 Uhr

Regularer Ausdruck um eine Zeichenfolge zwischen Klammern in Javascript zu
go-oleg

Sie müssen eine Reihe von entkommenen (with \) Klammern (die mit den Klammern übereinstimmen) und eine Gruppe regulärer Klammern, die Ihre Erfassungsgruppe erstellen:

var regExp = /\(([^)]+)\)/;
var matches = regExp.exec("I expect five hundred dollars ($500).");

//matches[1] contains the value between the parentheses
console.log(matches[1]);

Nervenzusammenbruch:

  • \( : Entspricht einer öffnenden Klammer
  • ( : Fanggruppe beginnen
  • [^)]+: Übereinstimmung mit einem oder mehreren non ) Zeichen
  • ) : Einfanggruppe beenden
  • \) : übereinstimmende schließende Klammern

Hier ist eine visuelle Erklärung auf RegErklärt

  • +1 Schön, hat wie ein Zauber funktioniert. Ich möchte Sie hinzufügen, um dies hinzuzufügen tinyurl.com/mog7lr3 in Ihrem für eine visuelle Erklärung.

    – Praveen

    26. September 2013 um 6:59 Uhr

  • Dies funktioniert nicht, wenn innerhalb der Klammern, die Sie erfassen möchten, Klammern vorhanden sind. Zum Beispiel: „Ich erwarte fünfhundert Dollar (500 Dollar (aber ich weiß, dass ich dieses Geld nie wieder sehen werde)).“

    – JayB

    11. Mai 2015 um 15:57 Uhr

  • Diese Regex funktioniert nur, wenn sie mit einer Instanz pro Stich übereinstimmt. Nutzung des Globalen /g Flag funktioniert nicht wie erwartet.

    – SilkAdmin

    26. Dezember 2015 um 4:01 Uhr

  • @IanWarburton, Streichhölzer[0] gibt Ihnen die vollständige Zeichenkette, die mit ‘($500)’ übereinstimmt, während Übereinstimmungen[1] gibt Ihnen genau das, was in der Erfassungsgruppe ist. Hier sind einige weitere Informationen zum Rückgabewert von regExp.match(). developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…

    – sbru

    9. September 2016 um 16:15 Uhr

  • Was ist die Lösung, wenn Sie mehrere Zeichenfolgen wie unten in Klammern haben: „Ich erwarte (fünf)hundert Dollar (500 $)“ Sagen wir, ich möchte ein Array dieser speziellen Zeichenfolgen.

    – Mohamad Al Asmar

    4. Januar 2018 um 15:11 Uhr

1646257517 839 Regularer Ausdruck um eine Zeichenfolge zwischen Klammern in Javascript zu
Herr Green

Versuchen Sie die String-Manipulation:

var txt = "I expect five hundred dollars ($500). and new brackets ($600)";
var newTxt = txt.split('(');
for (var i = 1; i < newTxt.length; i++) {
    console.log(newTxt[i].split(')')[0]);
}

oder Regex (das ist etwas langsam im Vergleich zu oben)

var txt = "I expect five hundred dollars ($500). and new brackets ($600)";
var regExp = /\(([^)]+)\)/g;
var matches = txt.match(regExp);
for (var i = 0; i < matches.length; i++) {
    var str = matches[i];
    console.log(str.substring(1, str.length - 1));
}

  • Wenn Sie diesen jsperf heute in Chrome 59.0.3071 ausführen, war die Regex um 8 % schneller

    – Alex McMillan

    27. Juli 2017 um 22:50 Uhr

1646257518 207 Regularer Ausdruck um eine Zeichenfolge zwischen Klammern in Javascript zu
Ali Soltani

Einfache Lösung

Notiz: Diese Lösung kann für Zeichenfolgen verwendet werden, die nur einzelne “(” und “)” wie die Zeichenfolge in dieser Frage enthalten.

("I expect five hundred dollars ($500).").match(/\((.*)\)/).pop();

Online-Demo (jsfiddle)

Regularer Ausdruck um eine Zeichenfolge zwischen Klammern in Javascript zu
Wiktor Stribiżew

Zum Abgleichen einer Teilzeichenfolge innerhalb von Klammern ohne eventuell verwendete innere Klammern

\(([^()]*)\)

Muster. Sehen der Regex-Demo.

Verwenden Sie es in JavaScript wie

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

Musterdetails

  • \( – ein ( verkohlen
  • ([^()]*) – Fanggruppe 1: a negierte Zeichenklasse Übereinstimmung mit 0 oder mehr Zeichen außer ( und )
  • \) – ein ) verkohlen.

Um die gesamte Übereinstimmung zu erhalten, greifen Sie den Wert der Gruppe 0, wenn Sie den Text in Klammern benötigen, greifen Sie den Wert der Gruppe 1.

Die aktuellste JavaScript-Code-Demo (mit matchAll):

const strs = ["I expect five hundred dollars ($500).", "I expect.. :( five hundred dollars ($500)."];
const rx = /\(([^()]*)\)/g;
strs.forEach(x => {
  const matches = [...x.matchAll(rx)];
  console.log( Array.from(matches, m => m[0]) ); // All full match values
  console.log( Array.from(matches, m => m[1]) ); // All Group 1 values
});

Legacy-JavaScript-Code-Demo (ES5-konform):

var strs = ["I expect five hundred dollars ($500).", "I expect.. :( five hundred dollars ($500)."];
var rx = /\(([^()]*)\)/g;


for (var i=0;i<strs.length;i++) {
  console.log(strs[i]);

  // Grab Group 1 values:
  var res=[], m;
  while(m=rx.exec(strs[i])) {
    res.push(m[1]);
  }
  console.log("Group 1: ", res);

  // Grab whole values
  console.log("Whole matches: ", strs[i].match(rx));
}

1646257519 920 Regularer Ausdruck um eine Zeichenfolge zwischen Klammern in Javascript zu
silkAdmin

Die Antwort von Mr_Green wurde auf einen funktionalen Programmierstil portiert, um die Verwendung temporärer globaler Variablen zu vermeiden.

var matches = string2.split('[')
  .filter(function(v){ return v.indexOf(']') > -1})
  .map( function(value) { 
    return value.split(']')[0]
  })

  • Was ich gesucht habe. stackoverflow.com/questions/49614116/…

    – wobsoriano

    2. April 2018 um 15:40 Uhr

1646257519 179 Regularer Ausdruck um eine Zeichenfolge zwischen Klammern in Javascript zu
P0W

Für nur Ziffern nach einem Währungszeichen: \(.+\s*\d+\s*\) sollte arbeiten

Oder \(.+\) für alles in Klammern

  • Was ich gesucht habe. stackoverflow.com/questions/49614116/…

    – wobsoriano

    2. April 2018 um 15:40 Uhr

Alternative:

var str = "I expect five hundred dollars ($500) ($1).";
str.match(/\(.*?\)/g).map(x => x.replace(/[()]/g, ""));
→ (2) ["$500", "$1"]

Es ist möglich, Klammern bei Bedarf durch eckige oder geschweifte Klammern zu ersetzen

  • Dies ist wann kaputt str hat keine Klammern

    – Ranjith Varatharajan

    23. Juli 2020 um 8:05 Uhr

916440cookie-checkRegulärer Ausdruck, um eine Zeichenfolge zwischen Klammern in Javascript zu erhalten

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy