gpt4 book ai didi

javascript - 在 jquery 选择器中获取 id 或类名使用 PHP 的正则表达式

转载 作者:行者123 更新时间:2023-11-30 00:33:09 27 4
gpt4 key购买 nike

我试图通过 PHP 捕获选择器中的所有 id 和类名

这是我正在使用的正则表达式:

/(?:\$|\$_|.(?:find|prependTo|closest|addClass|removeClass|toggleClass))+\(\'(.*?)\'\)/

它适用于

$('#test')
$('#test .banana')

它会给我 #test#test .banana (我可以用 PHP 按空格分割它们)

但它不能用于以下选择器

$('.photo-preview[temp-id="' + Index + '"]')
$('.photo-preview[temp-id="' + Index + '"] .hello')

它只会捕获整个内容,而不仅仅是类名

有什么办法可以抓到类名吗?

--

编辑:还没有答案,所以我决定使用这两个正则表达式,直到有一个真正的答案

(?:\.|#)-?([_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^\(]*\))

解释:找到所有的 id 和类

(?:\$|\$_|.(?:addClass|removeClass|toggleClass))\(\'([_a-zA-Z]+[_a-zA-Z0-9-].*(?=[^\(]*\'\)))

解释:在 addClass()、removeClass() 中找到那些类名 .. blah blah

因为在使用 addClass() 时它们没有点或 # 符号

--

现在通过“|”将它们混合在一起作为一个正则表达式(或)

这是临时答案

(?:\.|#)-?([_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^\(]*\))|(?:\$|\$_|.(?:addClass|removeClass|toggleClass))\(\'([_a-zA-Z]+[_a-zA-Z0-9-].*(?=[^\(]*\'\)))

小心:这会捕获 .和 # 符号,甚至 "addClass('"字符串,

所以你需要选择正确的数组,并用PHP拆分或者不需要的符号。

等等:这也会捕获“.jpg”,仍在编辑中..

最佳答案

好的,我刚刚在这里发布了另一个问题: There must something before the string

我想我得到了答案。

注意:请注意一些正则表达式会捕获 .# 符号,而有些则不会

--

1.获取选择器中的ID和类

回答

你仍然无法在 addClass()、removeClass() 中获取类名......

/(?:(?:\$|\$_|\.(?:find|prependTo|closest))\(\'|(?<!^)\G)\s?([.#][-\w]+)?[^()\s.#]*(?=[^()]*\))/gm

DEMO

--

解释

一个小技巧

(?:(?:\$|\$_|\.(?:find|prependTo|closest))\(\'|(?<!^)\G)

这是一个确认选择器中的 ID 或类的小技巧,

所以你不会url(http://www.google.com/test.jpg)中得到.jpg

但坏消息是,当有新的选择器时,你需要手动添加它们

不想捕获。和#?

你只需要删除正则表达式中的[.#],所以你需要改变

/(?:(?:\$|\$_|\.(?:find|prependTo|closest))\(\'|(?<!^)\G)\s?([.#][-\w]+)?[^()\s.#]*(?=[^()]*\))/gm
^^^
Remove this bracket

--

2.在addClass()、removeClass()..中获取类

回答

这将捕获 addClassremoveClasstoggleClass 中的全部内容,

据我所知这是愚蠢的方式。

/(?:\.(?:addClass|removeClass|toggleClass))\('(.*?)'\)/g

DEMO

--

3.在CSS中获取ID和类

回答

/(?![^{]+})(?:\.|#)([_a-zA-Z]+[_a-zA-Z0-9-]*)/g

DEMO

--

这个问题的答案?

让我们收集第一个和第二个正则表达式

/(?:(?:\$|\$_|\.(?:find|prependTo|closest))\(\'|(?<!^)\G)\s?([-\w]+)?[^()\s.#]*(?=[^()]*\))|(?:\.(?:addClass|removeClass|toggleClass))\('(.*)'\)/g

因此您现在可以在选择器中获取 ID 和类,

并且您仍然需要以其他方式在 addClass()、removeClass() 中拆分类。

DEMO

关于javascript - 在 jquery 选择器中获取 id 或类名使用 PHP 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28408551/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com