#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*?)$/
<- какие-либо сбои?