如何在jQuery中使用正则表达式:not()选择器

时间:2018-11-20 23:41:56

标签: javascript jquery regex jquery-selectors

我正在尝试匹配一些ID,但不匹配任何数字。例如,我想匹配#about,但不匹配#67#123

这是我的带有一些正则表达式的jQuery。我认为正则表达式是正确的,但由于没有任何href="#<number>"

,因此无法正确解析
$('a[href*="#"]:not([href="#"],[href="#\d+"])').click(function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') 
    || location.hostname == this.hostname) {

    var target = $(this.hash);
    target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
       if (target.length) {
         $('html,body').animate({
             scrollTop: target.offset().top -60
        }, 1500);
        return false;
    }
}

});

我是否应该以某种方式转义该正则表达式或将其插入为变量或...?

1 个答案:

答案 0 :(得分:0)

jQuery的选择器不支持regex,但是您可以使用regex使用.filter()过滤具有特定href属性的锚点。

$('a').filter(function(){
  return $(this).attr("href").match(/^#\D+$/);
}).css("color", "red");
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">#</a>
<a href="#about">#about</a>
<a href="#67">#67</a>
<a href="#123">#123</a>