【发布时间】:2019-10-28 06:51:36
【问题描述】:
我想通过 PHP 正则表达式隔离字符串的块、元素和修饰符部分。我使用的 BEM 风格是小写和连字符。例如:
this-defines-a-block__this-defines-an-element--this-defines-a-modifier
我的字符串总是按照上面的格式,所以regex不需要过滤掉任何无效的BEM,比如我永远不会有脏字符串比如:
This.defines-a-block__this-Defines-an-ELEMENT--090283
方块、元素和修饰符的名称可以包含数字,所以我们可以有以下任意组合:
this-is-block-001__this-is-element-001--modifier-002
最后一个修饰符是可选的,所以不是每个字符串都有一个,例如:
this-is-a-block-001__this-is-an-element
this-is-a-block-002__this-is-an-element--this-is-an-optional-modifier
我正在寻找一些正则表达式来返回 BEM 标记的每个部分。每个字符串将被隔离并单独发送到正则表达式,而不是作为一个组或多行字符串。以下单独发送:
# String 1
block__element--modifier
# String 2
block-one__element-one--modifier-one
# String 3
block-one-big__element-one-big--modifier-one-big
# String 4
block-one-001__element-one-001
会返回:
# String 1
block
element
modifier
# String 2
block-one
element-one
modifier-one
# String 3
block-one-big
element-one-big
modifier-one-big
# String 4
block-one-001
element-one-001
【问题讨论】: