在字符串之前必须有一些东西

时间:2015-02-09 15:55:56

标签: php jquery regex

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

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

my regex会抓住'.jpg','。png'.. url,现在我有了另一个想法

“任何类名或ID”前面都必须有$('个符号“

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

-

Here's what I do

\$\('((?:\.|#)([_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

1 个答案:

答案 0 :(得分:0)

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

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

DEMO