2014-12-18 4 views
-1

У меня есть строка, из которой я должен получить подстроку между двумя ограничениями, используя jQuery. Для примера, моя строкаПодстрока между двумя ограничениями с использованием jQuery

var sel = "x<span class=\"fm-script fm-inline\" style=\"vertical-align: 1.33em;\"><span style=\"vertical-align: 0em;\"><span class=\"fm-vert fm-frac\">1/2</span></span></span>+y<span class=\"fm-script fm-inline\" style=\"vertical-align: 0.7em;\">3</span>+z<span class=\"fm-script fm-inline\" style=\"vertical-align: 1.33em;\"><span style=\"vertical-align: 0em;\"><span class=\"fm-vert fm-frac\">2/3</span></span></span>"; 

Теперь мне нужно значение между <span class=\"fm-script fm-inline\" style=\"vertical-align: 0.7em;\"> и </span>.

Здесь оно 3. Значение динамическое. Также строка sel содержит более одного <span class=\"fm-script fm-inline\" style=\"vertical-align: 0.7em;\"> и </span>. Поэтому мне нужно все значение между этими строками.

Как я могу получить это?

Я пытался что-то вроде этого:

var item = sel.match("<span class=\"fm-script fm-inline\" style=\"vertical-align: 0.7em;\">(.*)</span>"); 

Но это дает результат между первым (здесь только один) <span class=\"fm-script fm-inline\" style=\"vertical-align: 0.7em;\"> и последний </span>.

Пожалуйста, проверьте скрипку для более подробной информации: FIDDLE

Здесь требуемый выход 3. Как я могу добиться этого? пожалуйста, помогите мне ..

Спасибо ..

+0

Почему бы не визуализировать его и использовать jQuery для захвата содержимого диапазона с помощью селекторов? Прямо сейчас вы вообще не используете jQuery, поэтому вопрос помечен неверно – mplungjan

+0

Я считаю, что вы используете только Javascript, а не какую-либо библиотеку Javascript, такую ​​как 'jQuery'. – melancia

+0

, пожалуйста, проверьте скрипку..и помогите мне, если сможете .. –

ответ

0

Почему бы не сделать его и использовать JQuery, чтобы захватить содержимое диапазона с помощью селекторов? Запуск RegEx против HTML считается BAD THING

var getTextNodesIn = function(el) { 
 
    return $(el).find(":not(iframe)").addBack().contents().filter(function() { 
 
     return this.nodeType == 3; 
 
    }); 
 
}; 
 
$(function() { 
 
    var sel = "x<span class=\"fm-script fm-inline\" style=\"vertical-align: 1.33em;\"><span style=\"vertical-align: 0em;\"><span class=\"fm-vert fm-frac\">1/2</span></span></span>+y<span class=\"fm-script fm-inline\" style=\"vertical-align: 0.7em;\">3</span>+z<span class=\"fm-script fm-inline\" style=\"vertical-align: 1.33em;\"><span style=\"vertical-align: 0em;\"><span class=\"fm-vert fm-frac\">2/3</span></span></span>"; 
 
     
 
    var $myDiv = $("<div/>"),vals=[]; 
 
    $myDiv.append(sel.replace(/\\"/g,'"')); 
 
    var $nodes = getTextNodesIn($myDiv);  
 
    $nodes.each(function() { 
 
     vals.push($(this).text()); 
 
    }); 
 
    alert(vals.join("\n")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

0

Регулярные выражения должны сделать трюк:

var regex = new RegExp("<span class=\"fm-script fm-inline\" style=\"vertical-align: 0.7em;\">([^<]*)</span>","g"); 
var match = null; 
while(match = regex.exec(sel)){ 
    console.log(match[1]); 
} 

Примечание: При этом предполагается, не существует других HTML-теги в пролетах.

Смежные вопросы