Wenn ich eine Zeichenfolge wie "Something12" oder "Something102" habe, wie würde ich einen regulären Ausdruck in Javascript verwenden, um nur die Zahlenteile zurückzugeben?
javascript
regex
Malcolm
quelle
quelle
d
, so.match(/\d+/g)
parseInt('987d98sf79s7f9s8f9sf'.match(/\d+/gi).join(''))
Sie können auch alle nichtstelligen Zeichen (
\D
oder[^0-9]
) entfernen :quelle
Für Zahlen mit Dezimalbruch und Minuszeichen verwende ich dieses Snippet:
Update: - 09.07.2008
Es wurde ein Tool gefunden, mit dem Sie reguläre Ausdrücke visuell bearbeiten können: JavaScript Parser & Visualizer für reguläre Ausdrücke .
Aktualisieren:
Hier ist eine andere, mit der Sie sogar Regexp debuggen können: Online-Regex-Tester und Debugger .
Aktualisieren:
Ein anderer: RegExr .
Aktualisieren:
Regexper und Regex Pal .
quelle
Wenn Sie nur Ziffern möchten:
Jetzt werden die Ziffern zusammengefügt
quelle
Ich denke, Sie möchten Nummer (n) aus der Zeichenfolge erhalten. In diesem Fall können Sie Folgendes verwenden:
quelle
get_numbers/1
ein Array von Zeichenfolgen zurückgegeben, nicht Zahlen. Für Ihr Beispiel würde es zurückgeben: *["102"]
*["102", "12"]
* nullDie Antworten stimmen nicht mit Ihrer Frage überein, was eine nachfolgende Zahl impliziert . Denken Sie auch daran, dass Sie eine Zeichenfolge zurückerhalten. Wenn Sie tatsächlich eine Nummer benötigen , geben Sie das Ergebnis ein:
Wenn Sie mit numerischen Element-IDs auf einer Webseite arbeiten, kann Ihr Code auch eine akzeptieren
Element
und die Nummer aus derid
(oder dem ersten übergeordneten Element mit einerid
) extrahieren . Wenn Sie einEvent
Handy haben, können Sie wahrscheinlich auch das bekommenElement
.quelle
quelle
IMO, die Nummer 3 der Antworten von Chen Dachao, ist der richtige Weg, wenn Sie eine beliebige Zahl erfassen möchten. Der reguläre Ausdruck kann jedoch verkürzt werden aus:
zu:
Zum Beispiel dieser Code:
generiert dieses Array:
Ich habe ein Beispiel für einen linearen MDN-Verlauf geschlachtet, damit der reguläre Ausdruck vollständig getestet wird und hier nicht gescrollt werden muss. Ich denke, ich habe alle Möglichkeiten in Bezug auf negative Zahlen, Dezimalstellen, Einheitensuffixe wie deg und%, inkonsistente Komma- und Leerzeichenverwendung sowie die zusätzlichen Zeichen für Punkt / Punkt und Bindestrich / Bindestrich in den Text "lin-grad.ient" aufgenommen ". Bitte lassen Sie mich wissen, wenn mir etwas fehlt. Das einzige, was ich sehen kann, dass es nicht funktioniert, ist eine schlecht geformte Dezimalzahl wie "0..8".
Wenn Sie wirklich ein Array von Zahlen möchten, können Sie das gesamte Array in dieselbe Codezeile konvertieren:
Mein spezieller Code, der CSS-Funktionen analysiert, muss sich nicht um die nicht numerische Verwendung des Punkt- / Punktzeichens kümmern, sodass der reguläre Ausdruck noch einfacher sein kann:
quelle
Verwenden von Split und Regex:
quelle
Laut der Antwort von @ Syntle erhalten Sie eine, wenn Sie nur nicht numerische Zeichen haben
Uncaught TypeError: Cannot read property 'join' of null
.Dies verhindert Fehler, wenn keine Übereinstimmungen gefunden werden, und gibt eine leere Zeichenfolge zurück:
('something'.match( /\d+/g )||[]).join('')
quelle
Wenn Sie auch durch Punkte / Kommas getrennte Zahlen möchten, dann:
oder
Sie können https://regex101.com/ verwenden , um Ihre regulären Ausdrücke zu testen.
quelle
Alles, was andere Lösungen haben, aber mit ein wenig Bestätigung
quelle