Как найти число в строке, используя JavaScript? - PullRequest
46 голосов
/ 26 октября 2009

Предположим, у меня есть строка типа - "вы можете ввести максимум 500 вариантов выбора". Мне нужно извлечь 500 из строки.

Основная проблема заключается в том, что строка может различаться как «вы можете ввести максимум 12500 вариантов» Так как получить целую часть?

Ответы [ 6 ]

87 голосов
/ 26 октября 2009

Используйте регулярное выражение .

var r = /\d+/;
var s = "you can enter maximum 500 choices";
alert (s.match(r));

Выражение \d+ означает «одну или несколько цифр». Регулярные выражения по умолчанию жадные означают, что они будут захватывать столько, сколько могут. Также это:

var r = /\d+/;

эквивалентно:

var r = new RegExp("\d+");

См. Подробности для объекта RegExp .

Приведенный выше код захватит первую группу цифр . Вы также можете просмотреть все совпадения:

var r = /\d+/g;
var s = "you can enter 333 maximum 500 choices";
var m;
while ((m = r.exec(s)) != null) {
  alert(m[0]);
}

Флаг g (global) является ключевым для работы этого цикла.

14 голосов
/ 11 мая 2015

var regex = /\d+/g;
var string = "you can enter maximum 500 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches);


Ссылка:

http://www.regular -expressions.info / javascript.html

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

8 голосов
/ 23 марта 2017

Мне нравится ответ @jesterjunk, однако число не всегда просто цифры. Рассмотрим эти действительные числа: «123,5, 123,567,789, 12233234 + E12»

Итак, я только что обновил регулярное выражение:

var regex = /[\d|,|.|e|E|\+]+/g;

var string = "you can enter maximum 5,123.6 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches); //5,123.6
3 голосов
/ 29 ноября 2018

var regex = /\d+/g;
var string = "you can enter 30%-20% maximum 500 choices";
var matches = string.match(regex);  // creates array from matches

document.write(matches);
2 голосов
/ 02 марта 2018
var str = "you can enter maximum 500 choices";
str.replace(/[^0-9]/g, "");
console.log(str); // "500"
0 голосов
/ 28 мая 2019

Вы также можете попробовать это:

var string = "border-radius:10px 20px 30px 40px";
var numbers = string.match(/\d+/g).map(Number);
console.log(numbers)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...