如果URL包含6位数字值且包含.pdf,.doc,.xls等,则将数值附加到类

时间:2017-03-19 11:59:16

标签: javascript jquery regex append href

这是我之前提出的问题的补充,但是包含了一些我不能解决的额外问题。如果有人回答,我再次搜索并道歉。我还在学习,请放轻松。

下面的代码正确地在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>

提前再次感谢你。

2 个答案:

答案 0 :(得分:1)

请尝试这个:

&#13;
&#13;
var regex = /\/([0-9]{1,6})\//ig;
$('a').each(function() {
  if ( !this.href.match(regex) ) return;
  $(this).addClass('pdf' + regex.exec($(this).attr("href"))[1]);
});
&#13;
<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>
&#13;
&#13;
&#13;

更新日期:21/03/2017

$(document).ready(function() {

    // Executes when the HTML document is loaded and ONLY the DOM is ready
    alert("Document is ready");
});

// .load() method deprecated from jQuery 1.8 onward
$(window).on("load", function() {

     // Executes when complete page is fully loaded, including
     // all frames, objects and images
     // This is what you need
     alert("Window is loaded");
});

答案 1 :(得分:0)

您可以直接使用addClass,使用回调,然后根据扩展名添加类,或者根本不添加

$('a').addClass(function() {
    if ( !this.href.match(/[0-9]{1,6}/ ) ) return "";
    var ext = this.href.match(/\.(pdf|doc|docx|ppt|pptx|xls|slxs|epub|odp|ods|txt|rtf)$/i);
    return ext[1] || "";
});
.pdf {color: red}
.doc {color: green}
<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>
<a href="https://www.pdflinks.com/files/145254/nameoffile.doc">Link4</a><br>