如何使用 querySelectorAll() 搜索以数字结尾的 href

Nim*_*nk0 5 javascript ecmascript-6

我正在寻找以数字结尾的所有元素。所以举个例子,我们有一个<a>带有这个href的。

href="artist.php?id=8932
Run Code Online (Sandbox Code Playgroud)

现在我可以通过以下方式获取href的所有出现:

document.querySelectorAll("[href^='artist.php?id=']")
Run Code Online (Sandbox Code Playgroud)

但是,这也给了我结果,例如

artist.php?id=8932#comments
Run Code Online (Sandbox Code Playgroud)

所以我想要的是我只能得到以数字结尾的hrefs到一个数组。我真的不想先用所有结果创建数组,然后清理 #extras 并删除重复项。

请注意,我不是也不会不使用 jQuery。

Kir*_*nov 2

由于querySelectorAll不接受正则表达式,因此无法href使用 css 选择器检查 a 是否以数字结尾。.filter但是您可以简单地使用和过滤所有以数字结尾的 href .match

let links = [...document.querySelectorAll("[href^='artist.php?id=']")].filter(a => a.href.match(/\d+$/));
console.log(links);
Run Code Online (Sandbox Code Playgroud)
<a href="artist.php?id=123"></a>
<a href="artist1.php?id=123"></a>
<a href="artist.php?id=123#comment"></a>
<a href="artist.php?id=abc"></a>
<a href="artist.php?id=abc123"></a>
Run Code Online (Sandbox Code Playgroud)