Javascript正则表达式是一个字面括号?

时间:2017-04-27 00:24:47

标签: javascript regex

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个插槽是匹配的)。

如何修复此正则表达式以使第二个数组插槽仅匹配?

1 个答案:

答案 0 :(得分:3)

您的模式存在一些问题,可能会有所缩减:

[9-_]

同样在角色类9内隐含_ [9_-],您可能不想要它。如果您重新排列字符,使其像typing(其中“ - ”)在最后,那么它将起作用。