Javascript 通过PHP使用正则表达式在jquery选择器中获取id或类名
我试图通过PHP捕获选择器中的所有id和类名 这是我正在使用的正则表达式:Javascript 通过PHP使用正则表达式在jquery选择器中获取id或类名,javascript,php,jquery,regex,Javascript,Php,Jquery,Regex,我试图通过PHP捕获选择器中的所有id和类名 这是我正在使用的正则表达式: /(?:\$|\$_|.(?:find|prependTo|closest|addClass|removeClass|toggleClass))+\(\'(.*?)\'\)/ 它适用于 $('#test') $('#test .banana') 它将给我#test和#test.banana(我可以使用PHP按空格分割它们) 但它无法在以下选择器上使用 $('.photo-preview[temp-id="' + In
/(?:\$|\$_|.(?: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()中查找这些类名。。废话
因为在使用addClass()时,它们没有点或#符号
--
现在通过“|”(或)将它们混合成一个正则表达式
以下是临时答案
(?:\.|#)-?([_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^\(]*\))|(?:\$|\$_|.(?:addClass|removeClass|toggleClass))\(\'([_a-zA-Z]+[_a-zA-Z0-9-].*(?=[^\(]*\'\)))
/(?![^{]+})(?:\.|#)([_a-zA-Z]+[_a-zA-Z0-9-]*)/g
小心点:这会吸引你。和#符号,甚至是“addClass(”)
弦
因此,您需要选择正确的数组,并通过PHP拆分或删除不必要的符号
稍等:这也将捕获“.jpg”,仍在编辑中。好的,我刚刚在这里发布了另一个问题: 我想我得到了答案 小心:请注意,一些正则表达式将捕获
和#
符号,而一些则不会捕获
--
1.在选择器中获取ID和类
回答
(?:\.|#)-?([_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^\(]*\))|(?:\$|\$_|.(?:addClass|removeClass|toggleClass))\(\'([_a-zA-Z]+[_a-zA-Z0-9-].*(?=[^\(]*\'\)))
/(?![^{]+})(?:\.|#)([_a-zA-Z]+[_a-zA-Z0-9-]*)/g
但仍然无法在addClass()和removeClass()中获取类名
/(?:(?:\$|\$_|\.(?:find|prependTo|closest))\(\'|(?<!^)\G)\s?([.#][-\w]+)?[^()\s.#]*(?=[^()]*\))/gm
--
2.在addClass()和removeClass()中获取类。。
回答
(?:\.|#)-?([_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^\(]*\))|(?:\$|\$_|.(?:addClass|removeClass|toggleClass))\(\'([_a-zA-Z]+[_a-zA-Z0-9-].*(?=[^\(]*\'\)))
/(?![^{]+})(?:\.|#)([_a-zA-Z]+[_a-zA-Z0-9-]*)/g
这将捕获addClass
、removeClass
和toggleClass
中的全部内容
据我所知,这是一种沉默的方式
/(?:\.(?:addClass|removeClass|toggleClass))\('(.*?)'\)/g
--
3.在CSS中获取ID和类
回答
(?:\.|#)-?([_a-zA-Z]+[_a-zA-Z0-9-]*)(?=[^\(]*\))|(?:\$|\$_|.(?:addClass|removeClass|toggleClass))\(\'([_a-zA-Z]+[_a-zA-Z0-9-].*(?=[^\(]*\'\)))
/(?![^{]+})(?:\.|#)([_a-zA-Z]+[_a-zA-Z0-9-]*)/g
--
这个问题的答案是什么?
让我们收集第一个和第二个正则表达式
/(?:(?:\$|\$_|\.(?:find|prependTo|closest))\(\'|(?<!^)\G)\s?([-\w]+)?[^()\s.#]*(?=[^()]*\))|(?:\.(?:addClass|removeClass|toggleClass))\('(.*)'\)/g
/(?:(?:\$\$\$\$U124\。(?:查找| prependTo |最近的))\(\'|(?
现在,您可以在选择器中获取ID和类
您仍然需要以其他方式拆分addClass()和removeClass()中的类
您能将一些测试体数据加载到中并保存,然后与我们共享fork的链接吗