有人可以解释为什么我的元素没有过滤吗?
这是在一本书中写的,他很难过,如果虚假元素将被删除并将显示 true 的元素:
$('li').filter(function() { return this.innerHTML.match(/^d+$/)})
我只需要用 14.15 过滤 li(我想要的结果只是 li 与 14.15)!
http://jsfiddle.net/crew1251/MYXYX/
<ul id="list">
<li>raz</li>
<li>asdf 14.15</li>
<li>tri</li>
<li>chetire_Tri</li>
<li>pyat</li>
</ul>
$('li').filter(function () {
return this.innerHTML.match(/^d+$/);
});
如果要查找包含数字的li
,则应执行以下操作
var listWithDigits = $('li').filter(function () {
return this.innerHTML.match(/d+/);
// return this.innerHTML.match(/d+$/); // returns lis that end with digits
// return this.innerHTML.match(/^d+/); // returns lis that start with digits
// return this.innerHTML.match(/^d+$/); // returns lis that contain only digits
});
console.log(listWithDigits.length); // 1
您当前的正则表达式失败,因为它只接受仅包含数字的li
,因为您已用^$
包装了正则表达式
http://jsfiddle.net/MYXYX/1/
您使用了错误的模式,您必须删除锚点:
$('li').filter(function () {
return $(this).html().match(/d/);
});
请注意,您不需要测试超过一位数字,因此+
量词是无用的。