CMS Eleanor - Поиск
Полная версия этой страницы: Официальный форум Eleanor CMS » Помогите с регуляркой!
Официальный форум Eleanor CMS » Для вебмастеров и владельцев сайтов » Комната программистов
Loader
Всем привет!

Задача состоит в следующем:
с сервера получаем ответ вида {"result":"1","url":"http:\/\/f-bit.ru\/385157","delete_url":"0"}
Так вот мне нужно извлечь эти шесть цифр 385157 (они каждый раз разные). Это нужно сделать для Squirrel.

У меня было пару вариантов, но они не идут:

function regex_simple(data,regStr,start)
{
	local ex = regexp(regStr);
	local res = ex.capture(data, start);
	local resultStr = "";
	if(res != null){	
		resultStr = data.slice(res[1].begin, res[1].end);
	}
	return resultStr;
}


local fileID = regex_simple(data,"http:\\/\\/f-bit\\.ru\\/([0-9]+)",0);


local fileID = regex_simple(data,"http:\\/\\/f-bit\\.ru\\/(\\d+)",0);


wormen
тут у вас регулярка немного неправильно написана+ ненужно все данные передавать для обработки регуляркой, а только URL
а получить цифры, можно например так

Number("a4r t 4r43 43a b345b 123 cc gaeg4".replace(/\D+/g,""))

возможно кто-то предложит и другие варианты
Loader
Цитата (wormen @ 2024-04-18 15:47)
тут у вас регулярка немного неправильно написана


А как правильно? Подскажите. Мне надо именно так.
wormen
так я написал. что неправильно, и написал вариант, как правильно....
в примере, там где синий текст, передавайте туда свой URL

Добавлено через 2 минут, 45 секунд:

Number(r.url.replace(/\D+/g,""));
где r.url это ваш элемент объекта из ответа

Loader
Не знаю кому как правильно, а я сделал так.
Сначала регуляркой извлёк URL:

local directUrl = regex_simple(data,"url\":\"(.+)\",",0);


а затем просто убрал все двойные обратные слеши - и получил то что нужно.
Спасибо за внимание.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.