Распарсить строку с помощью регулярного выражения
Есть контент на странице, например такой
<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div> нужно найти в нем блок который начинается на {^youtubevideoи заканчивается на ^} А то что в середине передать в массив. Обработать и заменить изначально найденный блок на новый на выходе должно получиться что-то типа <div class="engage-eventCallout"> <object width="425" height="264"> <param name="movie" value="http://www.youtube.com/v/3OieT8W-9Rs&fs=1&enablejsapi=1&color1=0x666666&color2=0xEFEFEF"> <param name="allowFullScreen" value="true"> <param name="allowscriptaccess" value="always"> <param name="wmode" value="transparent"> <embed src="http://www.youtube.com/v/3OieT8W-9Rs&fs=1&enablejsapi=1&color1=0x666666&color2=0xEFEFEF" type="application/x-shockwave-flash" wmode="transparent" allowscriptaccess="always" allowfullscreen="true" width="425" height="264"> December 16, 2011 Seattle WA</p></div> не могу написать регулярку, что бы выбрать данные из этого блока. Помогите пожалуйста с регуляркой! Преобразовать данные в объект думаю смогу сам. спасибо! |
я теперь аккуратненько вставь пропущенные буквы
|
Цитата:
|
оно?
var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>'; alert(str.match(/\^youtube.*\^}/)[0]) |
Цитата:
|
не понял что и как ты хочешь вычленить, но для запоминания используются круглые скобки
var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>'; var reg = /(.*\^youtube).*(\^}.*)/; str = str.match(reg)[0]; alert(str.replace(reg, "$1 MY_BLOCK $2")); |
Цитата:
|
ну и вычленяй потихоньку, специальные символы экранируй
как-нибудь типа так var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>'; var reg = /.*\^youtube.*\(width\)(\d*)\|.*\^}.*/; alert("width=" + str.replace(reg, "$1")); |
var str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>'; str=str.match(/\^youtube.*\^}/)[0]; var els=str.split('|'); for(var i=1;i<els.length;i++) {var el=els[i]; var l=el.split('(')[1].split(')')[0]; var r=el.split(')')[1]; alert(l+'="'+r+'"'); }; |
str = '<div class="engage-eventCallout">{^youtubevideo|(width)425|(height)264|(rel)True|(color1)#666666|(url)http://www.youtube.com/watch?v=ZqUFLFmuLmg|(autoplay)False|(border)False|(loop)False|(cookies)False|(hd)False|(fs)True|(color2)#EFEFEF^}December 16, 2011 Seattle WA</p></div>' if(/\^youtubevideo/gim.test(str)){ var arr=str.split(/\^youtubevideo\|\(|\^\}/igm)[1].replace(/\)/gim,':"').split("|\("); eval('var obj = {' + arr.join('",\n') + '"}'); for (i in obj){ alert(i+':'+obj[i]) } } |
Часовой пояс GMT +3, время: 12:53. |