Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получить значения всех групп (цикл) (https://javascript.ru/forum/misc/57294-kak-poluchit-znacheniya-vsekh-grupp-cikl.html)

A1x1On2015 28.07.2015 19:33

Как получить значения всех групп (цикл)
 
Здравствуйте,

у меня есть строка :
str = "sdfdsfdsfd, sdfdsggggg-gggg, ssssssss";
Мне необходимо получить в массив каждое совпадение из строки str

На C# у меня есть рабочая аналогия:
Код C#Выделить код


Код:

  foreach (Match t in Regex.Matches(str, @"([\b\w\-\w\b]+)"))
            {
                Debug.WriteLine("Уже есть: " + t.Value);
}

не пойму как сделать так же в js:
пытался так


str = "sdfdsfdsfd, sdfdsggggg-gggg, ssssssss";
re = /([\b\w\-\w\b]+)/i;
str.match(re).forEach(function (item, i) {
                    console.log(" -- Совпадение: " + item);
                    i++;
                });

Помогите плиз

ruslan_mart 28.07.2015 19:37

A1x1On2015, модификатор g нужен.

/([\b\w\-\w\b]+)/ig

А по хорошему:

var result;
while(result = re.exec(str)) {
     console.log(result);
}

рони 28.07.2015 19:40

A1x1On2015,

<script>
str = "sdfdsfdsfd, sdfdsggggg-gggg, ssssssss";
re = /[\w-]+/gi;
str.match(re).forEach(function (item, i) {
                    document.write("<br> -- Совпадение: " + item);
                });

</script>

A1x1On2015 29.07.2015 10:37

Да в отдельности строка str = "sdfdsfdsfd, sdfdsggggg-gggg, ssssssss";
проверяется но на моей реально задаче иначе.
В str по клику динамически присваиваются разные значения в переменной все ок, а match ругается
$(".t-item").live("click", function () {
        var re = /[\w-]+/gi;
        var str = $(".HIDDDENTAGS").val(); // sdfdsfdsfd, sdfdsggggg-gggg, ssssssss

        console.log("СТРОКА: " + str); // выводит значение str 
        // Но для match str не известна
        // Uncaught TypeError: Cannot read property 'forEach' of null
        //(anonymous function) 
        //jQuery.event.dispatch @ jquery-1.8.2.js:3077
        //jQuery.event.add.elemData.handle.eventHandle
        str.match(re).forEach(function (item, i) {
            console.log("-- Совпадение: " + item);
        });


    });

рони 29.07.2015 12:56

A1x1On2015,
делайте макет и обновите у себя jquery
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
     $(function(){
        $(".t-item").on("click", function () {
        var re = /[\w-]+/gi;
        var str = $(".HIDDDENTAGS").val();
        var html="";
        str = str.match(re)||[];
             str.forEach(function (item, i) {
            html+= "-- Совпадение: " + item + "<br>";
        });
       $("p").html(html||"нет в данных английских букв или -")

    });
});


  </script>
</head>

<body>
        <input class="HIDDDENTAGS" name="">
        <input class="t-item" name="" type="button" value="get">
        <p></p>
<script>


</script>
</body>

</html>

A1x1On2015 30.07.2015 15:40

Спасибо всем, то что нужно


Часовой пояс GMT +3, время: 21:08.