我最近花了一些时间将一些 SCSS 代码转换为 Stylus,我的正则表达式步骤之一是去除$
变量名称中的字符,同时将这些名称格式化为驼峰式而不是连字符式。
例如,$long-hyphenated-variable-name: value;
成为但像没有成为的longHyphenatedVariableName = value;
参数名称。text-size
textSize
无论如何,我的正则表达式技能非常有限,所以我只能弄清楚如何通过一系列传递来完成它,首先寻找可能有多达 6 个部分(5 个连字符)的变量名,然后在后续传递中寻找较短的变量名并将字符串的每个部分作为单独的反向引用传递,这样我就可以将第一个字母大写。但我想知道是否有更好的方法来做到这一点:即有没有办法在字符串中获取可变数量的子字符串匹配并根据你得到的数量提供反向引用?我只是找不到这方面的任何信息。
这是我的代码,分六个步骤,如果可能的话,我想将其浓缩为一个(我正在考虑编写一个多步骤的正则表达式例程,可以将 SCSS 转换为 Stylus 以供将来使用)。在每种情况下,搜索表达式后跟替换表达式:
\$(\S*?)\-(\S*?)\-(\S*?)\-(\S*?)\-(\S*?)\-(.)
$1\u$2\u$3\u$4\u$5\u$6
\$(\S*?)\-(\S*?)\-(\S*?)\-(\S*?)\-(.)
$1\u$2\u$3\u$4\u$5
\$(\S*?)\-(\S*?)\-(\S*?)\-(.)
$1\u$2\u$3\u$4
\$(\S*?)\-(\S*?)\-(.)
$1\u$2\u$3
\$(\S*?)\-(.)
$1\u$2
\$(.)
$1