驼峰式 BEM 的正则表达式
Regex for camel case BEM
我需要一个正则表达式模式来匹配驼峰大小写 BEM 类 遵循以下结构:
BlockName_elementName-modifierName
我创建了这个正则表达式来完成这项工作:
([A-Z][a-z0-9]+)+(\_[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?(\-[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?
应匹配的字符串示例:
Block
BlockName
BlockNameLonger
BlockName93
BlockName_element
BlockName_elementName
BlockName_elementNameLonger
BlockName_4elementName
BlockName_elementName-modifier
BlockName_elementName-modifierName
BlockName_elementName-modifierNameLonger
BlockName_elementName-modifier567Name
目前它匹配除 'longer' 以外的所有字符串。我不知道如何正确分组以匹配任何长度的骆驼案例组。有人可以帮忙吗?
在此处查看演示:http://regexr.com/3h0sf
原文:([A-Z][a-z0-9]+)+(\_[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?(\-[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?
分组以了解每组匹配的内容:
([A-Z][a-z0-9]+)+
至少 1 组 1 个大写和至少 1 个 lower/number
(\_[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?
可选地,一个下划线后跟一些 lower/number,然后可选地一个大写,然后是任意数量的 lower/number
(\-[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?
同上,除了以破折号开头。
我们需要将2nd和3rd改成在一组小写字母之后表现得像1st,所以我们只需要将它拼接成:
(\_[a-z0-9]+([A-Z][a-z0-9]+)*)?
(将 + 更改为 * 因为可能没有任何大写组)
(\-[a-z0-9]+([A-Z][a-z0-9]+)*)?
总计:
([A-Z][a-z0-9]+)+(\_[a-z0-9]+([A-Z][a-z0-9]+)*)?(\-[a-z0-9]+([A-Z][a-z0-9]+)*)?
我需要一个正则表达式模式来匹配驼峰大小写 BEM 类 遵循以下结构:
BlockName_elementName-modifierName
我创建了这个正则表达式来完成这项工作:
([A-Z][a-z0-9]+)+(\_[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?(\-[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?
应匹配的字符串示例:
Block
BlockName
BlockNameLonger
BlockName93
BlockName_element
BlockName_elementName
BlockName_elementNameLonger
BlockName_4elementName
BlockName_elementName-modifier
BlockName_elementName-modifierName
BlockName_elementName-modifierNameLonger
BlockName_elementName-modifier567Name
目前它匹配除 'longer' 以外的所有字符串。我不知道如何正确分组以匹配任何长度的骆驼案例组。有人可以帮忙吗?
在此处查看演示:http://regexr.com/3h0sf
原文:([A-Z][a-z0-9]+)+(\_[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?(\-[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?
分组以了解每组匹配的内容:
([A-Z][a-z0-9]+)+
至少 1 组 1 个大写和至少 1 个 lower/number(\_[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?
可选地,一个下划线后跟一些 lower/number,然后可选地一个大写,然后是任意数量的 lower/number(\-[a-z0-9]+[A-Z0-9]?[a-z0-9]*)?
同上,除了以破折号开头。
我们需要将2nd和3rd改成在一组小写字母之后表现得像1st,所以我们只需要将它拼接成:
(\_[a-z0-9]+([A-Z][a-z0-9]+)*)?
(将 + 更改为 * 因为可能没有任何大写组)(\-[a-z0-9]+([A-Z][a-z0-9]+)*)?
总计:
([A-Z][a-z0-9]+)+(\_[a-z0-9]+([A-Z][a-z0-9]+)*)?(\-[a-z0-9]+([A-Z][a-z0-9]+)*)?