绳子前面一定有什么东西


There must something before the string

我正在使用PHP,并试图捕获所有的ID&jQuery选择器中的类,如:

$('#ddd .aaa #bbb #c').show();
test.$('#eee[type=submit] .fff').addClass('test')   

但是我的正则表达式也会捕获".jpg"、".png"..url,现在我有了另一个想法

"任何类名或id前面都必须有一个$('符号"

(因此它不会捕获任何URL链接或十六进制代码)

--

我是这样做的:

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

但它只会赶上的第一场比赛

#ddd
#eee

我如何获得每个类的名称或ID,如:

#ddd
.aaa
#bbb
#c
#eee
.fff

并保留(或重复?)规则:字符串前面必须有一个$('符号

--

答案:

此正则表达式将搜索$().find().prependTo().closest()、中的类和ID

所以你需要手动添加更多的选择器:

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

您需要在此处使用'G锚点。锚CCD_ 8在上一个匹配结束的位置处匹配。在第一次匹配尝试期间,'G'A的方式在字符串的开头进行匹配。

(?:'$'('|(?<!^)'G)'s?([.#]'w+)[^()'s.#]*(?=[^()]*'))

演示