如果我有一个HTML字符串,例如:<div><p>£20<span class="abc" /><span class="def">56</span></p></div>我想要的文字是:20<span class="abc" /><span class="def">56如何定义正则表达式多次匹配目标节。到目前为止,我有:str.match(/\d*<[^>]*>\d*/)但这只会返回第一个数字部分 20<span class="abc" />我需要灵活地匹配多个标记/数字部分,同时修剪字符串中开头/结尾的任何数字。
3 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
/g如果您要匹配子字符串的多次出现,添加是不够的。如果是这种情况,可以按照此处的描述使用勉强的量词。
给定字符串:
<div><p>£20<span class="abc" /><span class="def">56</span></p></div>
您将使用以下内容找到想要的文本:
\d+.*>\d+
但是给定相同的字符串重复两次:
<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>
您不会多次找到目标选择。由于的贪婪性,您只会找到它一次.*。要使您不再.*贪婪或不情愿,只需在?后面添加一个*,您将到达:
\d+.*?>\d+
它将找到您要求的子字符串的两次出现,如下所示。
ibeautiful
TA贡献1993条经验 获得超5个赞
只需允许重复该组即可:(?:...)+表示“匹配...1次或多次:
str.match(/\d+(?:<[^>]*>)+\d+/)
根据Alan Moore的建议,我也将更改为,使所需的数字\d*变为\d+可选的数字。
- 3 回答
- 0 关注
- 620 浏览
添加回答
举报
0/150
提交
取消