css写法批量更改css-module模式,vscode 正则匹配批量替换

采用next.js开放网站,之前一直用官方插件next-css来开发,突然在next版本10.0.6以上版本的Webpack大的变动以外,把next-css给弃用,真是头大啊。

然后想将网站更换css-module模式。

就要求将

className="project_headerbox_left"
//更换为
className={styles.project_headerbox_left}的样式

一个一个的改,工作量巨大。

所以找到了,vscode里面正则匹配批量替换的功能:

className="([a-zA-Z0-9_]+)"

className={styles.$1}

中间匹配的要用()括起来,下面替换的才能用$1来取值。($0取当前的所以内容);

多个样式替换规则:

className="([a-zA-Z0-9_]+) ([a-zA-Z0-9_]+) ([a-zA-Z0-9_]+) ([a-zA-Z0-9_]+)"

className={`${styles.$1}  ${styles.$2} ${styles.$3} ${styles.$4}`}
import '([a-zA-z0-9./]+).css';
import styles from '$1.module.css';

 

不是很会正则表达式,大家有更好的正则欢迎告知。

如果关于css更改css-module模式有更好的办法,非常欢迎大家来讨论及分享

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果你想要同时匹配类名和对应的 CSS 样式,可以使用正则表达式来处理。 下面是一个示例,展示如何使用正则表达式匹配类名和对应的 CSS 样式: ```javascript const input = ` .class1 { color: red; font-size: 12px; } .class2 { background-color: blue; font-weight: bold; } .class3 { font-family: Arial, sans-serif; font-size: 14px; } `; const regex = /\.([a-zA-Z0-9_-]+)\s*{([^}]+)}/g; let match; const classAndStyles = {}; while ((match = regex.exec(input)) !== null) { const className = match[1]; const cssRules = match[2]; classAndStyles[className] = cssRules; } console.log(classAndStyles); ``` 这个示例中,我们定义了一个包含类名和对应 CSS 样式的字符串 `input`。 然后,我们使用正则表达式 `\.([a-zA-Z0-9_-]+)\s*{([^}]+)}` 进行匹配。其中 `\.` 表示匹配 `.` 字符,`([a-zA-Z0-9_-]+)` 表示匹配一个或多个字母、数字、下划线和破折号,并将其捕获为类名,`\s*` 表示匹配零个或多个空格,`{([^}]+)}` 表示匹配一对大括号内的内容,并将其捕获为 CSS 样式。 接下来,我们使用 `while` 循环和 `regex.exec(input)` 来执行匹配操作,并将每个匹配结果存储在 `match` 变量中。 在循环中,我们从每次匹配结果中提取类名和对应的 CSS 样式,并将它们存储在 `classAndStyles` 对象中,其中类名作为键,CSS 样式作为值。 最后,我们输出 `classAndStyles` 对象,它包含了所有匹配的类名和对应的 CSS 样式。 请注意,上述示例中使用了循环和正则表达式的 `exec()` 方法来实现全局匹配。你可以根据自己的需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web16888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值