Match() для запроса $(...)
Подскажите пожалуйста, как мне разбить строку ниже с помощью match(), чтобы получился массив ['div', 'id', ['class1', 'class2'], ['name1="name1"', 'name2="name2"']]
'div#id.class1.class2[name1="name1"][name2="name2"]' |
Посмотрите исходники jq, например, там есть рега, которая разбивает строчки похожим образом. Плюс и на этом сайте тема не раз поднималась.
|
Если б в jq был бы ответ на мой вопрос я бы его тут не задавал.. легко написать регулярку под частный случай, но если строка будет меняться (например уберется id или классы), то она перестанет работать
вот например ([^.#]+)(?:#([^.]+))(?:\.([^\[]+))(.+) выдает: div#id.class1.class2[name1="name1"][name2="name2"] div id class1.class2 [name1="name1"][name2="name2"] но как сделать вариант при отсутствии id например я не знаю |
Grammka, я говорю про исходники. Уверен, если бы вы почитали именно исходный код jQ, вы бы нашли ответ на свой вопрос. Там есть регэксп, который разбивает запрос на части, чтобы потом найти элементы, подходящие под запрос.
|
Если Вы считаете, что я не сразу понял что Вы имели ввиду исходники, то как я могу понять, что написано внутри... jQ Работает по принципу - если ID ищем ID, если селектор является html кодом, то создаем новый элемент, иначе запускаем find...
Вообщем вскрыл себе мозг, но написал, может кому пригодится: /([^#.\[]+)*(?:#([^.\[]+))*(?:\.([^\[]+))*(?:\[(.+))*/ А Вам, trikadin, жирный минус. Обожаю русский народ за желание |
Часовой пояс GMT +3, время: 13:55. |