我需要做一个非贪婪的比赛,希望有人能帮助我。我有以下内容,我正在使用 JavaScript 和 ASP
match(/\href=".*?\/pdf\/.*?\.pdf/)
上面的匹配,匹配一个 href 标记的第一个开始。我需要它只匹配作为/pdf/
文件夹一部分的最后一个 href。
有任何想法吗 ?
我需要做一个非贪婪的比赛,希望有人能帮助我。我有以下内容,我正在使用 JavaScript 和 ASP
match(/\href=".*?\/pdf\/.*?\.pdf/)
上面的匹配,匹配一个 href 标记的第一个开始。我需要它只匹配作为/pdf/
文件夹一部分的最后一个 href。
有任何想法吗 ?
您需要对子表达式匹配使用捕获括号:
match(/\href=".*?(\/pdf\/.*?\.pdf)/)[1];
Match 将返回一个包含索引 0 处的整个匹配项的数组,所有子表达式捕获将按照它们匹配的顺序添加到数组中。在这种情况下, index1
包含匹配的部分\/pdf\/.*?\.pdf
。
.*?
匹配过于广泛。例如:
match(/\href="([^"]+?\/pdf\/[^\.]+?\.pdf)"/)[1];
[^"]+?
将延迟匹配不包含双引号字符的字符串。这会将匹配限制在引号内,因此匹配在以下字符串中不会太宽泛,例如:
<a href="someurl/somepage.html">Test</a><a href="dir/pdf/file.pdf">Some PDF</a>