【发布时间】:2017-08-10 17:02:59
【问题描述】:
这是对我之前提出的问题的补充,但包含一些我无法破解的额外问题。我再次四处搜索并道歉,如果这已经得到回答。我还在学习,所以请放轻松。
下面的代码正确地在 URL 中查找 6 位数值,并将数值和 'pdf' 作为类添加到 href。
var regex = /[0-9]{1,6}/;
$('a').each(function() {
$(this).addClass('pdf' + regex.exec($(this).attr("href"))[0]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a>
问题 1
如何检查 6 位数值以及 URL 是否包含任何文档扩展类型,例如 .pdf、.doc、.xls 大写或小写等?我已经尝试了以下方法,但我的正则表达式运算符似乎有问题。我还尝试将表达式与“肯定的前瞻”断言分开,但无济于事。
var regex = /[0-9]{1,6}/\.(pdf|doc|docx|ppt|pptx|xls|slxs|epub|odp|ods|txt|rtf)$/i;
$('a').each(function() {
$(this).addClass('pdf' + regex.exec($(this).attr("href"))[0]);
});
问题 2
如果页面包含不符合条件的 URL 链接(没有 6 位数的值或文档扩展名),则函数将在此处停止,并且不会检查其他链接。 (下面的示例)如何使代码检查并跳过非限定符并涵盖与正则表达式匹配的所有链接?
var regex = /[0-9]{1,6}/;
$('a').each(function() {
$(this).addClass('pdf' + regex.exec($(this).attr("href"))[0]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a><br>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a><br>
<a href="https://www.pdflinks.com/files/nameoffile.pdf">Link3</a><br>
<a href="https://www.pdflinks.com/files/145254/nameoffile.pdf">Link4</a><br>
<a href="https://www.pdflinks.com/files/154254/nameoffile.pdf">Link5</a><br>
再次感谢您。
【问题讨论】:
标签: javascript jquery regex append href