2017-12-20 2 views
0

Ich übergebe Codes an eine API. Diese Codes sind alphanumerisch, wie dieser: M84.534DJavascript: Entfernen Sie nachgestellte Zeichen von Zeichenfolge, wenn sie nicht numerisch sind

Ich habe gerade festgestellt, dass die API die nachfolgenden Buchstaben nicht verwendet. Mit anderen Worten erwartet die API M84.534, am Ende keinen Buchstaben D. Das Problem, das ich habe, ist, dass das Format für die Codes nicht das gleiche ist. Ich kann M84.534DAC oder M84.534 haben.

Was ich brauche, um zu erreichen, bevor Sie den Code zu senden ist nicht numerische Zeichen aus dem Ende des Codes zu entfernen, so in den Beispielen:

M84.534D -> Ich muß passieren M84.534

M84.534DAC -> ich brauche auch M84.534

gibt es eine Funktion oder regex zu übergeben, die das tun?

Vielen Dank im Voraus an alle.

+1

Es gibt einen regulären Ausdruck ist. '$' bedeutet 'endet mit' und kann mit dem Ziffernoperator kombiniert werden? '/ \ d + $ /' könnte der richtige Pfad sein –

Antwort

2

Sie können die Regex unten verwenden. Es wird alles vom Ende der Zeichenfolge entfernen, die keine Zahl

let code = 'M84.534DAC' 
 

 
console.log(code.replace(/[^0-9]+?$/, ""));

  • [^0-9] alles paßt, die kein numer ist
  • +? zwischen 1 und unbegrenzten Zeiten
  • entsprechen
  • $ Passt das Ende der Zeichenfolge

So miteinander verbunden, wird es alle Nicht-Zahlen am Ende der Zeichenfolge übereinstimmen und sie durch nichts ersetzen.

+1

Mit einer Beschreibung aktualisiert – user184994

+0

Funktioniert perfekt! Sobald es mir erlaubt, markiere ich es als Gelöst! Ich schätze alle Antworten! Danke @ user184994 für die klare Erklärung. – Thiez

+0

Der Modifizierer '?' Ist nicht erforderlich, da er am Ende der Zeichenfolge verankert ist. – Barmar

1

könnten Sie den folgenden Ausdruck:

\D*$ 

Wie in:

var somestring = "M84.534D".replace(/\D*$/, ''); 
 
console.log(somestring);

Erläuterung: \D steht für nicht\d, der Stern * bedeutet null oder mehrmals (gierig) und der $ Anker den Ausdruck an das Ende der Zeichenfolge.

+0

Vielen Dank für Ihre Zeit zu antworten und zu erklären. Ich schätze es sehr. – Thiez

0

Angesichts Ihrer begrenzten Datenstichprobe ist dieser einfache reguläre Ausdruck die Lösung. Sie ersetzen die Übereinstimmung nur durch eine leere Zeichenfolge.

Ich habe document.write nur verwendet, damit wir die Ergebnisse sehen können. Du benutzt das, was immer du willst.

var testData = [ 
 
    'M84.534D', 
 
    'M84.534DAC' 
 
] 
 

 
regex = /\D+$/ 
 

 
testData.forEach((item) => { 
 
    var cleanValue = item.replace(regex, '') 
 
    document.write(cleanValue + '<br>') 
 
})

RegEx Zusammenbruch: \D = Alles, was + = Ein oder mehr Vorkommen keine Ziffer ist $ = Ende der Leitung/Eingang

Verwandte Themen