這裏我的問題:正則表達式來解析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