jQuery过滤函数regexp
有人可以解释为什么我的元素没有过滤?
这是在书中写的,他很遗憾如果将删除false元素并将显示带有true的元素:
$('li').filter(function() { return this.innerHTML.match(/^\d+$/)})
我只需要用14.15过滤li(我希望结果只有14.15)!
http://jsfiddle.net/crew1251/MYXYX/
- raz
- asdf 14.15
- tri
- chetire_Tri
- pyat
$('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
,因为您已使用^$
包装正则表达式
您使用错误的模式,您必须删除锚点:
$('li').filter(function () { return $(this).html().match(/\d/); });
请注意,您不需要测试多个数字,因此+
量词是无用的。