jquery — сопоставление с шаблоном

#jquery #regex #match

#jquery #регулярное выражение #совпадение

Вопрос:

Я пытался использовать функцию jquery match (), но я не могу получить ничего, что я пытаюсь работать…

В принципе, я пытаюсь сопоставить любую строку между круглыми скобками:

(пример) (pokemon) (su54gar99)

… и т.д.

Попробовал это (последняя попытка… не уверен, сколько я прошел на данный момент …)

 $('.acf').each(function() {
                var ac = $(this);
                ac.data('changed', false);
                ac.data('alias', 'ac-real-');
                ac.data('rx',  /s*(s )s*/i);
                ac.data('name', ac.attr('name'));
                ac.data('id', ac.attr('id'));
                ac.data('value', ac.val());
        });
  

Ответ №1:

Почему вы используете s ? Он соответствует любому символу пробела

Используйте регулярное выражение, подобное приведенному ниже:

 (. )
  

Комментарии:

1. Спасибо, я понял это примерно через 1 минуту после публикации… Тем не менее, спасибо!

2. Никогда не используйте точку, когда есть более точное выражение (в данном случае: [^()] ). Выражение: (. ) завершается ошибкой, если имеется несколько наборов круглых скобок. Обратите внимание, что версия с отложенной точкой: (. ?) также завершается ошибкой, если круглые скобки вложены. Используйте: ([^()]*) для безопасного сопоставления только самых внутренних наборов круглых скобок.

3. Это было просто предложение исправить то, что было неправильно. В любом случае, спасибо за ваш вклад.

Ответ №2:

Я предполагаю, что ваша ошибка в том, что » s» обозначает только пробельные символы, но не обычные символы ;).

Во-вторых, чтобы найти КАЖДЫЙ результат и не останавливаться после 1 результата, добавьте модификатор «g» (для глобального).

Попробуйте что-то вроде этого:

 var text = "(sample) (pokemon) (su54gar99)";
var found = text.match(/s*(([a-z,0-9]*))/ig);
$.each(found, function(i, v) {
    alert(i " = " v);
});
  

Работает, по крайней мере, с приведенным примером ;).

СОВЕТ: Посетите: http://www.w3schools.com/jsref/jsref_obj_regexp.asp Лучшая сторона для изучения регулярных выражений, на мой взгляд: P.

Комментарии:

1. Проклятия, побейте меня. /^(.|d*?)$/ <- какие-либо сбои?