5 Stimmen

Komplexer regulärer Ausdruck in JavaScript

Ich habe diese Aufgabe: Summiere alle Zahlen in der Zeichenkette und führe die Multiplikation durch

input: "3 chairs, 2 tables, 2\*3 forks"
result: 11

Ich habe bereits einen regulären Ausdruck, um dies zu tun:

eval(str.match(/(\d[\d\.\*]*)/g).join(' + '))

Ich möchte jedoch die Option hinzufügen, dass Zahlen innerhalb von Klammern "()" ignoriert werden.

input: "2 chairs, 3 tables (1 broke)"
result: 5

Wie kann man das tun?

Reguläre Ausdrücke waren für mich immer eine Qual :(

5voto

bobbymcr Punkte 23043

O

str = str.replace(/\([^\)]*\)/g, "");
// now run your original algorithm to sum/multiply...
// ...

T

I

0voto

npjohns Punkte 2158
(?=(\d+[\d.*]*)(?![^(]*?\)))\1

(?=( beginnt die Erfassung einer Gruppe mit einem Blick nach vorn

(\d+[\d.*]*)

ist die Erfassungsgruppe für Ihre Nummer

(?![^(]*?\))

ist eine negative Vorwärtssuche, die sicherstellt, dass nach der Zahl keine offene Klammer steht

)\1

look forward endet hier mit der gefundenen Nummer.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X