如果有人回答我的道歉。我试过寻找新鲜的,但也许我没有使用正确的术语。
我有一个页面,其中包含以下pdf示例的链接:
<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf">Link1</a>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a>
如果一个URL包含6位数字(如上所述)和.pdf这些值可以使用正则表达式和JQuery作为类添加到href中吗?结果是:
<a href="https://www.pdflinks.com/files/190488/nameoffile.pdf" class="pdf190488">Link1</a>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf" class="pdf112254">Link2</a>
我尝试过以下但没有雪茄
var regex = "^[0-9]{1,6}$";
$('a').each(function() {
$(this).addClass(regex.match($(this).attr("href"))[0]
});
答案 0 :(得分:2)
有几个错误:
exec
代替match
var regex = /[0-9]{1,6}/;
$('a').each(function() {
$(this).addClass('pdf' + regex.exec($(this).attr("href"))[0]);
});
&#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>
<a href="https://www.pdflinks.com/files/112254/nameoffile.pdf">Link2</a>
&#13;
此外,如果您的意思是正好是6位,请将正则表达式更改为[0-9]{6}
答案 1 :(得分:2)
您的代码存在一些问题:
"^[0-9]{1,6}$"
这就是说你期待一个长1到6个字符的数字,它位于字符串的开头,也是结尾。您还将字符串设置为字符串,而您可以使用实际表达式:
var regex = /[0-9]{1,6}/g;
regex.match
不是方法。您正在调用match
作为正则表达式的方法,但它实际上是另一种方式。 match
是字符串上的一种方法。
$(this).attr('href').match(regex)[0]
您的代码更新可能如下:
var regex = /[0-9]{1,6}/g;
$('a').each(function() {
var $this = $(this);
$this.addClass('pdf' + $this.attr('href').match(regex)[0]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/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>
有几种方法可以改善这一点,包括在添加类之前检查匹配是否存在。
答案 2 :(得分:0)
对于上面的网址:
$('a').each(function() {
var path = $(this).attr("href");
var str = path.split("/");
var fileName = str[5].split(".");
var className = fileName[1]+str[4];
$(this).addClass(className);
});