Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите получить числа (https://javascript.ru/forum/misc/16610-pomogite-poluchit-chisla.html)

rommeq 14.04.2011 19:13

Помогите получить числа
 
Как можно найти все числа в строке и заполнить ими массив

Так:
var re =  /\d+/g
	var res
	while ( (res = re.exec(str)) != null) {
	  ar[i] = res[i];
	  alert(res[i]);
	  i++;
	}

находится только первое число.

Matre 14.04.2011 19:19

Когда-то писал функцию для вычленения одного числа из строки. Но после небольшой переделки можно находить и все числа:

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 14.04.2011 19:35

Спасибо, попробую. Свиду просое действие и так легко запутаться.

рони 14.04.2011 20:18

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++;
	}

рони 14.04.2011 20:41

Matre,
А если parseNumber("xxx-2.3ee4ee..... 7ee10") ?

рони 14.04.2011 21:22

Вариант поиска чисел в строке

function parseNumber(obj) {
	return (obj + "").match(/[+-]?\d+(\.\d+)?(E[+-]?\d+)?/g) || [];
}
alert(parseNumber("xxx-2.3ee+4ee..... -5e600xx  7.5E10  xx9.1E-3"));

rommeq 15.04.2011 00:50

Спасибо, очень помогли


Часовой пояс GMT +3, время: 09:58.