Das funktioniert:
var.replace(/[^0-9]+/g, '');
Dieses einfache Snippet ersetzt alles, was keine Zahl ist, durch nichts.
Aber Dezimalstellen sind auch real. Also versuche ich herauszufinden, wie man einen Punkt einschließt.
Ich bin sicher, dass es wirklich einfach ist, aber meine Tests funktionieren nicht.
javascript
regex
Kaffeemonitor
quelle
quelle
Antworten:
Bist du der Zeit entkommen?
var.replace(/[^0-9\.]+/g, '');
quelle
Das Ersetzen von etwas, das keine Zahl ist, ist etwas schwieriger als das Ersetzen von etwas, das eine Zahl ist.
Diejenigen, die vorschlagen, einfach den Punkt hinzuzufügen, ignorieren die Tatsache, dass. wird auch als Punkt verwendet, also:
This is a test. 0.9, 1, 2, 3
wird werden.0.9123
.Die spezifische Regex in Ihrem Problem hängt stark vom Zweck ab. Wenn Sie nur eine einzige Zahl in Ihrer Zeichenfolge haben, können Sie dies tun:
var.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1")
Dadurch wird die erste Nummer gefunden und die gesamte Zeichenfolge durch die übereinstimmende Nummer ersetzt.
quelle
Versuche dies:
var.replace(/[^0-9\\.]+/g, '');
quelle
Versuche dies:
var.replace(/[0-9]*\.?[0-9]+/g, '');
Das stimmt nur mit gültigen Dezimalstellen überein (z. B. "1", "1.0", ".5", aber nicht "1.0.22")
quelle
Wenn Sie die IP-Adresse nicht zusammen mit den Dezimalstellen abfangen möchten:
var.replace(/[^0-9]+\\.?[0-9]*/g, '');
Was nur Ziffern mit einer oder null Perioden fängt
quelle
Es gibt bereits viele richtige Antworten, die nur darauf hinweisen, dass Sie möglicherweise auch negative Vorzeichen berücksichtigen müssen.
"\-"
Fügen Sie dies zu jeder vorhandenen Antwort hinzu, um negative Zahlen zu berücksichtigen .quelle
Wie wäre es damit:
var numbers = str.gsub(/[0-9]*\.?[0-9]+/, "#{0} ");
quelle
Süßes und kurzes Inline-Ersetzen nicht numerischer Zeichen im ASP.Net-Textfeld:
<asp:TextBox ID="txtJobNo" runat="server" class="TextBoxStyle" onkeyup="this.value=this.value.replace(/[^0-9]/g,'')" />
Ändern Sie den Regex-Teil nach Ihren Wünschen. Viele, viele Leute beschweren sich darüber, dass der Cursor bei Verwendung der Pfeiltasten direkt zum Ende geht, aber die Leute neigen dazu, damit umzugehen, ohne es zu bemerken, zum Beispiel Pfeil ... Pfeil ... Pfeil ... okay dann ... Rücktaste Rücktaste, geben Sie die neuen Zeichen ein.
quelle
Hier sind einige von mir verwendete jQuery-Eingabeklassentypen:
$("input.intgr").keyup(function (e) { // Filter non-digits from input value. if (/\D/g.test($(this).val())) $(this).val($(this).val().replace(/\D/g, '')); }); $("input.nmbr").keyup(function (e) { // Filter non-numeric from input value. var tVal=$(this).val(); if (tVal!="" && isNaN(tVal)){ tVal=(tVal.substr(0,1).replace(/[^0-9\.\-]/, '')+tVal.substr(1).replace(/[^0-9\.]/, '')); var raVal=tVal.split(".") if(raVal.length>2) tVal=raVal[0]+"."+raVal.slice(1).join(""); $(this).val(tVal); } });
intgr erlaubt hier nur numerische - wie andere Lösungen.
nmbr erlaubt nur positive / negative Dezimalstellen. Negative muss das erste Zeichen (man kann „+“ , um den Filter hinzufügen , wenn Sie es brauchen), Streifen
-3.6.23.333
zu-3.623333
Ich stelle nmbr auf, weil ich es satt habe, den Weg zu finden, nur 1 Dezimalstelle und ein Negativ auf der 1. Position zu halten
quelle
Dieser hat nur für -ve bis + ve Zahlen funktioniert
<input type="text" oninput="this.value = this.value.replace(/[^0-9\-]+/g, '').replace(/(\..*)\./g, '$1');">
quelle