为了账号安全,请及时绑定邮箱和手机立即绑定

如何匹配子字符串的多次出现

如何匹配子字符串的多次出现

杨__羊羊 2019-10-12 11:18:41
如果我有一个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贡献1853条经验 获得超6个赞

要多次匹配,需要使用全局选项


str.match(/your_expression_here/g)


查看完整回答
反对 回复 2019-10-12
?
素胚勾勒不出你

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+

它将找到您要求的子字符串的两次出现,如下所示。


查看完整回答
反对 回复 2019-10-12
?
ibeautiful

TA贡献1993条经验 获得超5个赞

只需允许重复该组即可:(?:...)+表示“匹配...1次或多次:


str.match(/\d+(?:<[^>]*>)+\d+/)

根据Alan Moore的建议,我也将更改为,使所需的数字\d*变为\d+可选的数字。


查看完整回答
反对 回复 2019-10-12
  • 3 回答
  • 0 关注
  • 620 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信