Подтвердить что ты не робот

Как найти число в строке с помощью JavaScript?

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

Основная проблема заключается в том, что строка может меняться так: "вы можете ввести максимум 12500 вариантов". Итак, как получить целую часть?

4b9b3361

Ответ 1

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

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 (глобальный) является ключом для работы этого цикла.

Ответ 2

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

document.write(matches);

Ответ 3

Мне нравится ответ @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

Ответ 4

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);

Ответ 5

var str = "you can enter maximum 500 choices";
str.replace(/[^0-9]/g, "");
console.log(str); // "500"

Ответ 6

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

var string = "border-radius:10px 20px 30px 40px";
var numbers = string.match(/\d+/g).map(Number);
console.log(numbers)