这里我的问题:正则表达式来解析BEM类选择器与javascript
我想分割一个字符串到一个对象数组。 我的字符串是一个BEM类选择器,如下所示:
其中我的字符串(没有点)将被匹配'__'和' - '分割。
foo-bar--baz__foo--bar
= ['foo-bar', '--baz', '__foo', '--bar']
foo-bar--baz
= ['foo-bar', '--baz']
foo-bar__bar--baz
= ['foo-bar', '__bar', '--baz']
foo
= ['foo']
我用下面的正则表达式的尝试:
const regex = /([a-zA-Z0-9']+)(--[a-zA-Z0-9']+)(__[a-zA-Z0-9']+)/g;
while (match = reg.exec(string)) {
var group1 = match[1];
var group2 = match[2];
var group3 = match[3];
console.log(group1+'; '+group2+'; '+group3);
}
但foo-bar--baz__foo--bar
只能输出:
foo-bar --baz __foo
,而不是最后的--bar
...
我想不通为什么。
而且,也许更好的整体解决方案存在解决我的问题......
感谢对帮助
你确定'foo-bar - baz__foo - bar'是一个“有效”的BEM id entifier? – evolutionxbox
@evolutionxbox是的,这是一个在各种BEM风格中有效的BEM类。 – zzzzBov
@zzzzBov这只是奇怪。那个选择者似乎是一个BMBEM。 – evolutionxbox