如果我有一個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條經驗 獲得超6個贊
只需允許重復該組即可:(?:...)+表示“匹配...1次或多次:
str.match(/\d+(?:<[^>]*>)+\d+/)
根據Alan Moore的建議,我也將更改為,使所需的數字\d*變為\d+可選的數字。
- 3 回答
- 0 關注
- 672 瀏覽
添加回答
舉報
0/150
提交
取消