Как найти число в строке с помощью JavaScript?
Предположим, что у меня есть строка типа - "вы можете ввести максимум 500 вариантов".
Мне нужно извлечь 500
из строки.
Основная проблема заключается в том, что строка может меняться так: "вы можете ввести максимум 12500 вариантов".
Итак, как получить целую часть?
Ответы
Ответ 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)