Ich versuche, einen regulären Ausdruck zu schreiben, der eine Zeichenfolge zwischen Klammern zurückgibt. 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
Gefunden Regulärer Ausdruck eine Zeichenkette zwischen zwei Strings in Javascript zu bekommen
Aber ich bin neu bei Regex. Ich weiß nicht, wie ich '(', ')' in Regexp verwenden soll
javascript
regex
string
Okky
quelle
quelle
var regExp = /\(\$([^)]+)\)/;
Antworten:
Sie müssen eine Reihe von maskierten (mit
\
) Klammern (die mit den Klammern übereinstimmen) und eine Gruppe von regulären Klammern erstellen, die Ihre Erfassungsgruppe erstellen:Nervenzusammenbruch:
\(
: Entspricht einer öffnenden Klammer(
: Beginnen Sie mit der Erfassung der Gruppe[^)]+
: Entspricht einem oder mehreren Nicht-)
Zeichen)
: Erfassungsgruppe beenden\)
: Übereinstimmende schließende KlammernHier ist eine visuelle Erklärung zu RegExplained
quelle
/g
Flags funktioniert nicht wie erwartet.Versuchen Sie es mit einer String-Manipulation:
oder Regex ( was im Vergleich zu oben etwas langsam ist )
quelle
Portierte Mr_Green Antwort auf eine funktionale Programmierung Stil Verwendung von temporären globalen Variablen zu vermeiden.
quelle
Einfache Lösung
Hinweis : Diese Lösung kann für Zeichenfolgen verwendet werden, die in dieser Frage nur einzelne "(" und ")" ähnliche Zeichenfolgen enthalten.
Online-Demo (jsfiddle)
quelle
Für nur Ziffern nach einem Währungszeichen:
\(.+\s*\d+\s*\)
sollte funktionierenOder
\(.+\)
für irgendetwas in Klammernquelle
)
später in der Zeichenfolge ein anderer Text angezeigt wird, wirdI expect five hundred dollars ($500). (but I'm going to pay).
die Gier des Textes+
viel mehr erfassen.($500)
und(but I'm going to pay)
abgeglichen zu werden, aber in zwei getrennten Übereinstimmungen, anstatt als ein einzelnes übereinstimmendes Element betrachtet zu werden? Danke im Voraus!Zum Abgleichen eines Teilstrings in Klammern mit Ausnahme der möglicherweise verwendeten inneren Klammern
Muster. Siehe die Regex-Demo .
Verwenden Sie es in JavaScript wie folgt
Musterdetails
\(
- ein(
char([^()]*)
- Erfassen von Gruppe 1: Eine negierte Zeichenklasse, die mit 0 oder mehr Zeichen als(
und übereinstimmt)
\)
- ein)
char.Um die gesamte Übereinstimmung zu erhalten, greifen Sie auf den Wert für Gruppe 0 zu. Wenn Sie den Text in Klammern benötigen, greifen Sie auf den Wert für Gruppe 1 zu.
Die aktuellste JavaScript-Code-Demo (mit
matchAll
):Legacy-JavaScript-Code-Demo (ES5-kompatibel):
Code-Snippet anzeigen
quelle
()
und deren Inhalt erfasst , selbst wenn sie nebeneinander liegen()()
.matchAll
JavaScript-Code-Demo hinzugefügt .quelle
Alternative:
Bei Bedarf können Klammern durch eckige oder geschweifte Klammern ersetzt werden
quelle
Entspricht der ersten Zahl, beginnend mit einem $ und gefolgt von ')'. ')' wird nicht Teil des Spiels sein. Der Code warnt bei der ersten Übereinstimmung.
Dieser Code warnt bei allen Übereinstimmungen.
Verweise:
Suche nach "? = n" http://www.w3schools.com/jsref/jsref_obj_regexp.asp
Suchen Sie nach "x (? = y)" https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp
quelle