如何把em/rem转换成px?

How to convert em/rem to px?

我有一个将 px 转换为 em 的脚本:

perl -p -i -e 's/(\d+)px/(\/16).em/ge' stylesheet.css

但是,当我调整它以将 em 转换为 px 时,它无法正常工作:

perl -p -i -e 's/(\d+)em/(*16).px/ge' stylesheet.css

它将2.25em转换为2.400px。请帮我解决这个问题。

您没有匹配小数部分:

  • 匹配整数部分(一个或多个数字`\d+)
  • 可选地匹配小数部分
    • 匹配点 (\.)
    • 匹配小数部分(一个或多个数字\d+
$ echo '2.25em 2em' | perl -pe 's/(\d+(?:\.\d+)?)em/(*16).px/ge'
36px 32px

您可以改用字符组 [ ]

perl -p -i -e 's/(\d[\d\.]*)px/(\/16).em/ge'
perl -p -i -e 's/(\d[\d\.]*)em/(*16).px/ge'