Ругулярные выражения.
Есть следующий текстовый документ:
{ "http://habrahabr.ru/": { "id": "http://habrahabr.ru/", "shares": 832 }, "http://habrahabr.ru/company/apps4all/blog/144705/": { "id": "http://habrahabr.ru/company/apps4all/blog/144705/", "shares": 11 } } Нужно при помощи регулярки получить числа: 832 и 11. При этом нужно учесть что второго числа может и небыть, в данном случае 11. Как пробовал я: var txt = '{"http://habrahabr.ru/events/coming/":{"id": "http://habrahabr.ru/events/coming/","shares": 832},"http://habrahabr.ru/":{"id": "http://habrahabr.ru/","shares": 11}}'; var matches = txt.math(/"shares":\s+(\d+)\s+/g); При это я ожидал что в: matches[0] -> будет изначальный документ matches[1] -> первое значение (832) matches[2] -> второе значение (11), если есть Но как оказалось все не так, постоянно возвращается непонятная фигня. Поэтому помогите )) |
var found = txt.match( /"shares":\s*\d+/gm ); // дальше сами ) |
Magneto, видимо, мне следовало сразу добавить - про сохраняющие скобки в матче забудьте (при глобальном поиске).
|
<script type="text/javascript"> var txt = '{"http://habrahabr.ru/events/coming/":{"id": "http://habrahabr.ru/events/coming/","shares": 832},"http://habrahabr.ru/":{"id": "http://habrahabr.ru/","shares": 11}}'; re = /"shares": [0-9]+[^0-9]/gm; found = txt.match(re); for(var i in found){ found[i]=found[i].replace(/^[^0-9]+/g,'') found[i]=parseFloat(found[i]) alert('>'+found[i]+'<') } </script> |
str = '{"http://habrahabr.ru/events/coming/":{"id": "http://habrahabr.ru/events/coming/","shares": 832},"http://habrahabr.ru/":{"id": "http://habrahabr.ru/","shares": 11}}'; num1 = str.match(/("shares":\s(\d+))|"shares":\s/g)[0] num2 = str.match(/("shares":\s(\d+))|"shares":\s/g)[1] alert("num1: "+num1+"\nnum2: "+num2) |
9xakep, попробуй заменить цифру на такую 832F
|
Deff,
ТС не написал, будет ли там буквы, а так добавить parseFloat не проблема. Или опять же регулярками вытаскивать тупо все что после shares, а потом парсить |
Цитата:
|
Зачем регулярка, если это JSON?
|
Kolyaj,
У мну например - такая задачка - типовая - к движку доступа нет |
Часовой пояс GMT +3, время: 01:22. |