If the number is at the start of the string:
("123 hello everybody 4").replace(/(^d+)(.+$)/i,'$1'); //=> '123'
If it's somewhere in the string:
(" hello 123 everybody 4").replace( /(^.+)(wd+w)(.+$)/i,'$2'); //=> '123'
And for a number between characters:
("hello123everybody 4").replace( /(^.+D)(d+)(D.+$)/i,'$2'); //=> '123'
[addendum]
A regular expression to match all numbers in a string:
"4567 stuff is fun4you 67".match(/^d+|d+|d+(?=w)/g); //=> ["4567", "4", "67"]
You can map the resulting array to an array of Numbers:
"4567 stuff is fun4you 67"
.match(/^d+|d+|d+(?=w)/g)
.map(function (v) {return +v;}); //=> [4567, 4, 67]
Including floats:
"4567 stuff is fun4you 2.12 67"
.match(/d+.d+|d+|d+(?=w)/g)
.map(function (v) {return +v;}); //=> [4567, 4, 2.12, 67]
If the possibility exists that the string doesn't contain any number, use:
( "stuff is fun"
.match(/d+.d+|d+|d+(?=w)/g) || [] )
.map(function (v) {return +v;}); //=> []
So, to retrieve the start or end numbers of the string 4567 stuff is fun4you 2.12 67"
// start number
var startingNumber = ( "4567 stuff is fun4you 2.12 67"
.match(/d+.d+|d+|d+(?=w)/g) || [] )
.map(function (v) {return +v;}).shift(); //=> 4567
// end number
var endingNumber = ( "4567 stuff is fun4you 2.12 67"
.match(/d+.d+|d+|d+(?=w)/g) || [] )
.map(function (v) {return +v;}).pop(); //=> 67
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…