Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Match() для запроса $(...) (https://javascript.ru/forum/misc/32411-match-dlya-zaprosa-%24.html)

Grammka 15.10.2012 22:34

Match() для запроса $(...)
 
Подскажите пожалуйста, как мне разбить строку ниже с помощью match(), чтобы получился массив ['div', 'id', ['class1', 'class2'], ['name1="name1"', 'name2="name2"']]

'div#id.class1.class2[name1="name1"][name2="name2"]'

trikadin 15.10.2012 22:52

Посмотрите исходники jq, например, там есть рега, которая разбивает строчки похожим образом. Плюс и на этом сайте тема не раз поднималась.

Grammka 16.10.2012 11:18

Если б в jq был бы ответ на мой вопрос я бы его тут не задавал.. легко написать регулярку под частный случай, но если строка будет меняться (например уберется id или классы), то она перестанет работать

вот например ([^.#]+)(?:#([^.]+))(?:\.([^\[]+))(.+) выдает:
div#id.class1.class2[name1="name1"][name2="name2"]
div id class1.class2 [name1="name1"][name2="name2"]

но как сделать вариант при отсутствии id например я не знаю

trikadin 16.10.2012 19:51

Grammka, я говорю про исходники. Уверен, если бы вы почитали именно исходный код jQ, вы бы нашли ответ на свой вопрос. Там есть регэксп, который разбивает запрос на части, чтобы потом найти элементы, подходящие под запрос.

Grammka 16.10.2012 22:10

Если Вы считаете, что я не сразу понял что Вы имели ввиду исходники, то как я могу понять, что написано внутри... jQ Работает по принципу - если ID ищем ID, если селектор является html кодом, то создаем новый элемент, иначе запускаем find...

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

/([^#.\[]+)*(?:#([^.\[]+))*(?:\.([^\[]+))*(?:\[(.+))*/

А Вам, trikadin, жирный минус. Обожаю русский народ за желание помогать посылать. :victory:


Часовой пояс GMT +3, время: 13:55.