如果URL包含6位数字,则将值附加到类

时间:2017-03-17 13:40:30

标签: jquery regex append href

如果有人回答我的道歉。我试过寻找新鲜的,但也许我没有使用正确的术语。

我有一个页面,其中包含以下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]
});

3 个答案:

答案 0 :(得分:2)

有几个错误:

  • 正则表达式被锚定:没有匹配
  • 正则表达式错误初始化
  • 使用方法exec代替match
  • JS无效(缺少右括号)

&#13;
&#13;
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;
&#13;
&#13;

此外,如果您的意思是正好是6位,请将正则表达式更改为[0-9]{6}

答案 1 :(得分:2)

您的代码存在一些问题:

  1. 您的正则表达式"^[0-9]{1,6}$"
  2. 这就是说你期待一个长1到6个字符的数字,它位于字符串的开头,也是结尾。您还将字符串设置为字符串,而您可以使用实际表达式:

    var regex = /[0-9]{1,6}/g;
    
    1. regex.match不是方法。
    2. 您正在调用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);
});