const str = `zell class="www-some" bro and class="ded_Me" or addClass('coolman') also addClass("boo-boo")`;
const allCssClassRegex = /addClass\(["|']([a-zA-Z0-9-_]+)["|']\)|class=["|']([a-zA-Z0-9-_]+)["|']/gi;
let match;
while ((match = allCssClassRegex.exec(str)) != null) {
console.log(match);
}
我试图匹配两个模式并让数组的第二个成员匹配。输出如下:
[ 'class="www-some"',
undefined,
'www-some',
index: 5,
input: 'zell class="www-some" bro and class="ded_Me" or addClass(\'coolman\') also addClass("boo-boo")' ]
[ 'class="ded_Me"',
undefined,
'ded_Me',
index: 30,
input: 'zell class="www-some" bro and class="ded_Me" or addClass(\'coolman\') also addClass("boo-boo")' ]
[ 'addClass(\'coolman\')',
'coolman',
undefined,
index: 48,
input: 'zell class="www-some" bro and class="ded_Me" or addClass(\'coolman\') also addClass("boo-boo")' ]
[ 'addClass("boo-boo")',
'boo-boo',
undefined,
index: 73,
input: 'zell class="www-some" bro and class="ded_Me" or addClass(\'coolman\') also addClass("boo-boo")' ]
看来文字(
以某种方式被解释为一个组,因为匹配的第二个成员是未定义的(并且1,2个插槽是匹配的)。
如何修复此正则表达式以使第二个数组插槽仅匹配?
答案 0 :(得分:3)
您的模式存在一些问题,可能会有所缩减:
[9-_]
同样在角色类9
内隐含_
到 [9_-]
,您可能不想要它。如果您重新排列字符,使其像typing
(其中“ - ”)在最后,那么它将起作用。