Jquery цикл через регулярное выражение - PullRequest
1 голос
/ 31 октября 2011

(это жирная обезьяна с jquery)

У меня есть строка данных, полученная с помощью
$.post('page.php',function (data) { ... });
В этих данных есть HTML-теги, такие как
<option value='numeric'>data</option> вместе со случайной, бесполезной информацией.
Я хочу иметь возможность циклически проходить каждое совпадение и получать числовые значения и данные между тегами параметров.
Как бы я это сделал? Я попробовал:
reg = new RegExp(/<option value=\'(.+?)\'>(.+?)<\/option>/);<br> var result;<br> while (result = reg.exec(data)) {<br> GM_log(result);<br> }
Однако это возвращает все виды сбоев. Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 31 октября 2011
$.post('page.php',function (data) { 
   alert($(data).find('option').attr('value')); 
   // returns numeric if there is one element. so use a .each() to get individual ones.

});
0 голосов
/ 31 октября 2011

попробуйте использовать / g в шаблоне Object.

Я проверил это с помощью приведенного ниже примера кода:

<html>
   <body>
     <script type="text/javascript">

           var str="Hello world Hello World Heello you! ";
           //look for "Hello"
           var patt=/Hello/g;
           var resulT
           while(result=patt.exec(str)){
             document.write("Returned value: " +  result); 
             var result=patt.exec(str);
             document.write("<br />Returned value: " +  result); 
           }
       </script>
    </body>
</html>
0 голосов
/ 31 октября 2011

Первая проблема, которую я вижу, состоит в том, что вы передаете конструктору RegExp литеральный объект регулярного выражения.Это не проблема как таковая, но нет смысла использовать конструктор RegExp, если вы можете сделать это с помощью литерала регулярных выражений.

Вы можете использовать конструктор RegExp как этот

reg = new RegExp("<option value='(.+?)'>(.+?)<\/option>");

или, альтернативно, вы можете использовать регулярное выражение, подобное этому

reg = /<option value='(.+?)'>(.+?)<\/option>/;

Теперь

reg.exec("<option value='numeric'>data</option>") 

дает

["<option value='numeric'>data</option>", "numeric", "data"]

Наконец, синтаксический анализ HTML с регулярными выражениями нехорошая идея.Подробнее об этом здесь RegEx соответствует открытым тегам, кроме автономных тегов XHTML

...