Помогите получить числа
Как можно найти все числа в строке и заполнить ими массив
Так:
var re = /\d+/g
var res
while ( (res = re.exec(str)) != null) {
ar[i] = res[i];
alert(res[i]);
i++;
}
находится только первое число. |
Когда-то писал функцию для вычленения одного числа из строки. Но после небольшой переделки можно находить и все числа:
function parseNumber(obj) {
obj = (obj + "").match(/[e\.0-9-]+/gi) || [];
var res = [];
for (var i = 0; i < obj.length; i++)
if (/^-?(?:\d?\.)?\d+(?:e-?\d+)?$/i.test(obj[i]))
res.push(+obj[i]);
return obj;
}
alert(parseNumber("xxx-2.3aaa4.7E10"));
Примечательна тем, что может находить числа со знаком "-", с десятичной точкой и в экспоненциальном виде (1E3 = 1000, например). |
Спасибо, попробую. Свиду просое действие и так легко запутаться.
|
rommeq,
Исправленный ваш вариант
var str = " 111 222 333",
re = /\d+/g,
i = 0,
ar = [] ,
res;
while ( (res = re.exec(str)) != null) {
ar[i] = res[0];
alert(ar[i]);
i++;
}
|
Matre,
А если parseNumber("xxx-2.3ee4ee..... 7ee10") ? |
Вариант поиска чисел в строке
function parseNumber(obj) {
return (obj + "").match(/[+-]?\d+(\.\d+)?(E[+-]?\d+)?/g) || [];
}
alert(parseNumber("xxx-2.3ee+4ee..... -5e600xx 7.5E10 xx9.1E-3"));
|
Спасибо, очень помогли
|
| Часовой пояс GMT +3, время: 12:47. |