Контекст
Я новичок в regex (все еще практикую), и я пытаюсь извлечь значения script src
или link href
из тегов (в образовательных целях).
Учитывая следующий HTML
<!-- hello -->
<script src="1.js"></script>
<script src="2.js"></script>
<link rel="stylesheet" href="3.css"/>
<!-- world -->
Я бы хотел получить
Массив: 1.js
, 2.js
и 3.css
Я пробовал
Это регулярное выражение, которое я сделал до сих пор, но ме.
/(?:<!-- hello -->\s*?)([\s\S]*?)(?:\s?<!-- world -->)/gmi
Конечно, я должен заменить [\s\S]*?
чем-то лучшим, но я перепробовал много комбинаций, и ни одна из них не сработала.
С уважением.
Обновить
Только сценарии между тегами <!-- xxx --><!-- xxx-->
должны быть сопоставлены.
Следующее не должно совпадать:
<!-- foo-->
<script src="4.js"></script>
<script src="5.js"></script>
<link rel="stylesheet" href="6.css"/>
<!-- bar-->
3 ответа
Использовать регулярное выражение
<!-- hello -->([\S\s]+)<!-- world -->
Чтобы извлечь действительную строку в первой группе, см. демонстрационную версию regex
Тогда вы можете использовать регулярное выражение
<(?:script src.*|link.*href)="(\w+\.\w+)
Все матчи будут в группе 1
См. демонстрационную версию regex
Если у вас есть такой элемент, как
<name attribute=value attribute="value" attribute='value'>
Это регулярное выражение может быть использовано для последовательного поиска каждого имени и значения атрибута
(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?
Применяется на:
<a href=test.html class=xyz>
<a href="test.html" class="xyz">
<a href='test.html' class="xyz">
Это даст:
'href' => 'test.html'
'class' => 'xyz'
Итак, как отметил Wiktor Stribiżew, это следует делать поэтапно, поскольку в JS невозможно получить прямой результат.
Сначала вам нужно будет захватить элементы между тегами <!-- xxx --><!-- xxx -->
, а затем использовать глобальный поиск по результату.
Спасибо Виктору Стрибьеву!
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.