Javascript正则表达式:如何在组中提取html标记值?
上下文 我不熟悉regex(仍在练习),我正在尝试从标记中提取Javascript正则表达式:如何在组中提取html标记值?,javascript,regex,Javascript,Regex,上下文 我不熟悉regex(仍在练习),我正在尝试从标记中提取scriptsrc或link href值(用于教育目的) 给定以下html <!-- hello --> <script src="1.js"></script> <script src="2.js"></script> <link rel="stylesheet" href="3.css"/> <!-- world -->
scriptsrc
或link href
值(用于教育目的)
给定以下html
<!-- hello -->
<script src="1.js"></script>
<script src="2.js"></script>
<link rel="stylesheet" href="3.css"/>
<!-- world -->
当然,我必须用更好的东西来替换[\s\s]*?
,但我尝试了很多组合,但没有一个有效
问候
更新
只应匹配
标记之间的脚本
以下内容不应匹配:
<!-- foo-->
<script src="4.js"></script>
<script src="5.js"></script>
<link rel="stylesheet" href="6.css"/>
<!-- bar-->
如果您有如下元素
<name attribute=value attribute="value" attribute='value'>
适用于:
<a href=test.html class=xyz>
<a href="test.html" class="xyz">
<a href='test.html' class="xyz">
使用正则表达式
<!-- hello -->([\S\s]+)<!-- world -->
([\S\S]+)
要提取第一组中的有效字符串,请参阅
然后你可以使用正则表达式
<(?:script src.*|link.*href)="(\w+\.\w+)
因此,正如Wiktor Stribiżew所提到的,应该分步骤完成,因为在JS中不可能直接得到结果 首先,您必须获取
标记之间的元素,然后对结果进行全局搜索
谢谢Wiktor Stribiżew 您已经完成了步骤1。现在,继续执行步骤2,只需使用
/(?:src | href)=“([^”]*)“/g
并获取第1组值。如果不完成第一步,就不可能直接获取其他值?在JS中,不……哦,明白了!请把它作为答案贴出来,我会接受的。我建议你自己写,这样你会学得更好。请使用我的评论作为指导。您可以尝试以下操作,或者,根据您的需要:-)您可以在之间提取文本,然后在生成的字符串上应用此正则表达式如果它是正确的解决方案,请将其标记为答案:)还不能,至少两天:-(
'href' => 'test.html'
'class' => 'xyz'
<!-- hello -->([\S\s]+)<!-- world -->
<(?:script src.*|link.*href)="(\w+\.\w+)