513 Stimmen

Wie kann ich eine Zahl aus einer Zeichenkette in JavaScript extrahieren?

Ich habe eine Zeichenkette in JavaScript (z.B. #box2 ) und ich möchte nur die 2 von ihm.

Ich habe es versucht:

var thestring = $(this).attr('href');
var thenum = thestring.replace( /(^.+)(\w\d+\w)(.+$)/i,'$2');
alert(thenum);

Sie liefert immer noch #box2 in der Meldung, wie kann ich sie zum Funktionieren bringen?

Sie muss für jede beliebige Länge der am Ende angebrachten Nummer geeignet sein.

807voto

georg Punkte 205206

Für dieses spezielle Beispiel,

 var thenum = thestring.replace( /^\D+/g, ''); // replace all leading non-digits with nothing

im allgemeinen Fall:

 thenum = "foo3bar5".match(/\d+/)[0] // "3"

Da diese Antwort aus irgendeinem Grund an Popularität gewonnen hat, gibt es einen Bonus: einen Regex-Generator.

function getre(str, num) {
  if(str === num) return 'nice try';
  var res = [/^\D+/g,/\D+$/g,/^\D+|\D+$/g,/\D+/g,/\D.*/g, /.*\D/g,/^\D+|\D.*$/g,/.*\D(?=\d)|\D+$/g];
  for(var i = 0; i < res.length; i++)
    if(str.replace(res[i], '') === num) 
      return 'num = str.replace(/' + res[i].source + '/g, "")';
  return 'no idea';
};
function update() {
  $ = function(x) { return document.getElementById(x) };
  var re = getre($('str').value, $('num').value);
  $('re').innerHTML = 'Numex speaks: <code>' + re + '</code>';
}

<p>Hi, I'm Numex, the Number Extractor Oracle.
<p>What is your string? <input id="str" value="42abc"></p>
<p>What number do you want to extract? <input id="num" value="42"></p>
<p><button onclick="update()">Insert Coin</button></p>
<p id="re"></p>

314voto

Jason Marshall Punkte 2979

Sie sollten Folgendes versuchen:

var txt = "#div-name-1234-characteristic:561613213213";
var numb = txt.match(/\d/g);
numb = numb.join("");
alert (numb);

Ergebnis

1234561613213213

159voto

Theodoros Klikas Punkte 1969

Ich denke, dass dieser reguläre Ausdruck für Ihren Zweck geeignet ist:

var num = txt.replace(/[^0-9]/g,'');

Wo txt ist Ihre Zeichenkette.

Im Grunde genommen wird alles abgeschnitten, was keine Ziffer ist.

Ich denke, Sie können das Gleiche erreichen, indem Sie auch dies verwenden:

var num = txt.replace(/\D/g,'');

76voto

xbalaji Punkte 972

Versuchen Sie das Folgende: string.replace(/[^0-9]/g, ''); Dadurch werden alle nicht ziffernbezogenen Zeichen gelöscht, so dass nur Ziffern in der Zeichenkette verbleiben

function retnum(str) { 
    var num = str.replace(/[^0-9]/g, ''); 
    return parseInt(num,10); 
}

console.log('abca12bc45qw'.replace(/[^0-9]/g, ''));
console.log('#box2'.replace(/[^0-9]/g, ''));

59voto

Shiplu Mokaddim Punkte 54255

Verwendung der Match-Funktion.

var thenum = "0a1bbb2".match(/\d+$/)[0];
console.log(thenum);

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