如果我有一个HTML字符串,例如:
<div><p>£20<span class="abc" /><span class="def">56</span></p></div>
Run Code Online (Sandbox Code Playgroud)
我想要的文字:
20<span class="abc" /><span class="def">56
Run Code Online (Sandbox Code Playgroud)
如何定义正则表达式以多次匹配目标部分.到目前为止,我有:
str.match(/\d*<[^>]*>\d*/)
Run Code Online (Sandbox Code Playgroud)
但这只会返回第一个数字部分 20<span class="abc" />
我需要灵活地匹配多个标签/数字部分,同时修剪前导或尾随字符串中第一个/最后一个数字的任何内容.
要多次匹配,需要使用全局选项
str.match(/your_expression_here/g)
^
Run Code Online (Sandbox Code Playgroud)
/g如果要匹配多个出现的子字符串,添加是不够的。如果是这种情况,可以按照此处所述使用不情愿的量词。
鉴于字符串:
<div><p>£20<span class="abc" /><span class="def">56</span></p></div>
Run Code Online (Sandbox Code Playgroud)
您将使用以下方法获得您想要的文本:
\d+.*>\d+
Run Code Online (Sandbox Code Playgroud)
但给定相同的字符串重复两次:
<div><p>£20<span class="abc" /><span class="def">56</span></p></div><div><p>£20<span class="abc" /><span class="def">56</span></p></div>
Run Code Online (Sandbox Code Playgroud)
您不会多次找到目标选择。由于.*. 要使.*非贪婪或不情愿,只需在?之后添加一个*,您将获得:
\d+.*?>\d+
Run Code Online (Sandbox Code Playgroud)
这将找到您要求的子字符串的两次出现,如下所示。