Nếu số là lúc bắt đầu của chuỗi:
("123 hello everybody 4").replace(/(^\d+)(.+$)/i,'$1'); //=> '123'
Nếu đó là nơi nào đó trong chuỗi:
(" hello 123 everybody 4").replace(/(^.+)(\w\d+\w)(.+$)/i,'$2'); //=> '123'
Và đối với một số giữa các ký tự:
("hello123everybody 4").replace(/(^.+\D)(\d+)(\D.+$)/i,'$2'); //=> '123'
[phụ lục]
Một biểu thức chính quy để phù hợp với tất cả các số trong một chuỗi:
"4567 stuff is fun4you 67".match(/^\d+|\d+\b|\d+(?=\w)/g); //=> ["4567", "4", "67"]
Bạn có thể lập bản đồ các mảng dẫn đến một loạt các số:
"4567 stuff is fun4you 67"
.match(/^\d+|\d+\b|\d+(?=\w)/g)
.map(function (v) {return +v;}); //=> [4567, 4, 67]
Bao gồm phao:
"4567 stuff is fun4you 2.12 67"
.match(/\d+\.\d+|\d+\b|\d+(?=\w)/g)
.map(function (v) {return +v;}); //=> [4567, 4, 2.12, 67]
Nếu khả năng tồn tại mà chuỗi không chứa bất kỳ số lượng, sử dụng:
("stuff is fun"
.match(/\d+\.\d+|\d+\b|\d+(?=\w)/g) || [])
.map(function (v) {return +v;}); //=> []
Vì vậy, để lấy lại sự khởi đầu hoặc kết thúc số của chuỗi 4567 stuff is fun4you 2.12 67"
// start number
var startingNumber = ("4567 stuff is fun4you 2.12 67"
.match(/\d+\.\d+|\d+\b|\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+\b|\d+(?=\w)/g) || [])
.map(function (v) {return +v;}).pop(); //=> 67
Nếu bạn * biết * có một số trong chuỗi, bạn có thể sử dụng một lớp lót này: '" Xin chào 123 ở đó! "Nếu không, bạn sẽ muốn kiểm tra' null' trước khi thực hiện '.shift()'. [Source] (https://stackoverflow.com/ a/609588/114558) – rinogo