Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过PHP使用正则表达式在jquery选择器中获取id或类名_Javascript_Php_Jquery_Regex - Fatal编程技术网

Javascript 通过PHP使用正则表达式在jquery选择器中获取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

我试图通过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()中查找这些类名。。废话

因为在使用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的链接吗