Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.04.2011, 19:13
Интересующийся
Отправить личное сообщение для rommeq Посмотреть профиль Найти все сообщения от rommeq
 
Регистрация: 30.12.2010
Сообщений: 15

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

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

находится только первое число.
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2011, 19:19
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

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

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, например).
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2011, 19:35
Интересующийся
Отправить личное сообщение для rommeq Посмотреть профиль Найти все сообщения от rommeq
 
Регистрация: 30.12.2010
Сообщений: 15

Спасибо, попробую. Свиду просое действие и так легко запутаться.
Ответить с цитированием
  #4 (permalink)  
Старый 14.04.2011, 20:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

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++;
	}
Ответить с цитированием
  #5 (permalink)  
Старый 14.04.2011, 20:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Matre,
А если parseNumber("xxx-2.3ee4ee..... 7ee10") ?
Ответить с цитированием
  #6 (permalink)  
Старый 14.04.2011, 21:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

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

function parseNumber(obj) {
	return (obj + "").match(/[+-]?\d+(\.\d+)?(E[+-]?\d+)?/g) || [];
}
alert(parseNumber("xxx-2.3ee+4ee..... -5e600xx  7.5E10  xx9.1E-3"));
Ответить с цитированием
  #7 (permalink)  
Старый 15.04.2011, 00:50
Интересующийся
Отправить личное сообщение для rommeq Посмотреть профиль Найти все сообщения от rommeq
 
Регистрация: 30.12.2010
Сообщений: 15

Спасибо, очень помогли
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
Помогите найти ошибку((( hacker_007 Общие вопросы Javascript 5 28.01.2011 17:37
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32
Помогите нубу Fongolcs Работа 34 19.05.2010 22:45