我正在尝试匹配一些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;
}
}
});
我是否应该以某种方式转义该正则表达式或将其插入为变量或...?
答案 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>