Функция фильтра jQuery regexp

0

Может ли кто-нибудь объяснить, почему мои элементы не фильтруются?

это то, что написано в книге, и он печально, что если false элемент будет удален и отобразит элементы с true:

$('li').filter(function() { return this.innerHTML.match(/^\d+$/)})

Мне нужно отфильтровать только li с 14.15 (я хочу получить результат только с 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+$/);
});
  • 0
    что вы хотите отфильтровать? Можете ли вы написать желаемый результат с вашим примером.
Теги:

2 ответа

6
Лучший ответ

Если вы хотите найти 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/

  • 0
    не работает, мне нужен только 1 результат, отфильтрованный li с цифрами 14.15
  • 0
    @ user1956570 Вы, наверное, не смотрели jsfiddle.net/MYXYX/1 , который я разместил, вы можете видеть, что он правильно регистрирует тот li с 14.15 в нем. Может быть, вы пропустили console.log Смотрите jsfiddle.net/MYXYX/2
Показать ещё 6 комментариев
1

Вы используете неправильный шаблон, вы должны удалить привязки:

$('li').filter(function () {
    return $(this).html().match(/\d/);
});

Обратите внимание, что вам не нужно тестировать более одной цифры, поэтому квантификатор + бесполезен.

  • 0
    Почему вы вызываете $(this).remove() ? ОП не просил удалить его из DOM
  • 0
    да без удаления, просто отфильтрованный

Ещё вопросы

Сообщество Overcoder
Наверх
Меню