За последние 24 часа нас посетил 16851 программист и 1178 роботов. Сейчас ищут 1467 программистов ...

Регулярное выражение для поиска формы

Тема в разделе "JavaScript и AJAX", создана пользователем Rocketware, 12 мар 2024.

  1. Rocketware

    Rocketware Активный пользователь

    С нами с:
    1 дек 2020
    Сообщения:
    33
    Симпатии:
    0
    Всем привет!
    Сейчас я изучаю регулярные выражения в разрезе JavaScript.
    Регулярка в коде, который я нашел, находит первую форму:
    Код (Javascript):
    1. /<form[^>]+[^>]*>/i
    Подскажите, пожалуйста, как сделать регулярку, которая бы находила вторую по счету форму?
     
  2. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    418
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день!
    Важно правильно расставить приоритеты - выбрать оптимальное решение для поиска второй по счету форму из JS
    или обязательно исрользовать для этого регулярку.
    Оптимальное решение в Вашем случае не ругулярка, но если очень хочется, то здесь всё
    HTML:
    1. <div>
    2. <form name="a"></form>
    3. <form name="b"></form>
    4. <form name="c"></form>
    5. </div>
    6. </body>
    7. divForms = document.getElementsByTagName("div")[0];
    8. AllForms = divForms.getElementsByTagName("form");
    9. console.log(AllForms);
    10. /*
    11. HTMLCollection { 0: form, 1: form, 2: form, length: 3, … }
    12. 0: <form name="a">
    13. 1: <form name="b">
    14. 2: <form name="c">
    15. a: <form name="a">
    16. b: <form name="b">
    17. c: <form name="c">
    18. length: 3
    19. */
    20.  
    21. console.log(" form[1].name = ",AllForms[1].name);
    22.  
    23. /*
    24. form[1].name =  b
    25. */
    26.  
    27. // RegExp divFormsContent string
    28. divFormsContent = divForms.innerHTML;
    29. console.log(divFormsContent);
    30. /*
    31. <form name="a"></form>
    32. <form name="b"></form>
    33. <form name="c"></form>
    34. */
    35.  
    36. regexp = new RegExp("<form[^>]*>(.*?)</form>", "gms");
    37. findForms = [];
    38. while ((matches = regexp.exec(divFormsContent)) !== null) {
    39.   console.log(`Found ${matches[0]}. Next starts at ${regexp.lastIndex}.`);
    40.   findForms.push(matches[0]);
    41. }
    42. /*
    43. Found <form name="a"></form>. Next starts at 23. form.html:35:11
    44. Found <form name="b"></form>. Next starts at 46. form.html:35:11
    45. Found <form name="b"></form>. Next starts at 69.
    46. */
    47. console.log(findForms[1]);
    48. /*
    49. <form name="b"></form>
    50. */
    51. </html>
    Удачи!
     
    #2 Vladimir Kheifets, 12 мар 2024
    Последнее редактирование: 12 мар 2024
  3. Rocketware

    Rocketware Активный пользователь

    С нами с:
    1 дек 2020
    Сообщения:
    33
    Симпатии:
    0
    Спасибо Вам большое за столь подробный ответ!