PostCSS中匹配断点的正则表达式
Regular Expression for matching breakpoints in PostCSS
我在一个项目中工作,我需要删除高于 600px
的断点中的 css 代码
我必须使用一些正则表达式来实现它,而且我有点卡住检测一些断点
虽然我有大部分圆顶。
你可以在这里查看https://regex101.com/r/2FIadh/1/
我已经在测试字符串中放入了项目的所有断点,(不幸的是,一些值以 px 为单位,其他以 em 为单位)所以我可以检查我是否有正确的匹配项
目前我正在努力摆脱这些
(min-width: 64.0625em)
(min-width: 90em)
(min-width: 768px)
(min-width: 61.25em)
(min-width: 67.5em)
(min-width: 77.1875em)
(min-width: 700px)
(min-width: 850px)
并保留这些
(min-width: 0px) and (max-width: 1363px)
(min-width: 0px) and (max-width: 1363px)
我怎样才能检测到这些?
我不习惯做正则表达式,所以花了我很长时间,但我试了一下:
匹配值大于 600px
为此,我们可以匹配:
- A) 4 位以上无前导零的数字
- B) 以 7、8 或 9 开头的 3 位数字
- C) 以 6 开头但后面不跟 00
的 3 位数字
- D) 600 后跟不只是零的小数
可以翻译为:
| A | B | C | D |
/(0*([1-9]\d{3,}[\.\d]*|[7-9]\d{2}[\.\d]*|6(?!00)\d{2}[\.\d]*|600\.\d*[1-9]\d*)\s*px)/g
var str = " 0222px | 365px | 435.765 px | 600.0000px | 600px | 600.03px | 601 px | 765px | 800.01px | 1000 px | 15562px";
var res = str.replace(/(\s0*([1-9]\d{3,}[\.\d]*|[7-9]\d{2}[\.\d]*|6(?!00)\d{2}[\.\d]*|600\.\d*[1-9]\d*)\s*px)/g,"<b></b>");
document.body.innerHTML = res.split('|').join('<br>');
b{ color: red }
匹配值大于 60em
为此,我们可以匹配:
- A) 3 位以上无前导零的数字
- B) 以 7、8 或 9 开头的 2 位数字
- C) 以 6 开头但后面不跟 0 的 2 位数字
- D) 60 后跟不只是零的小数
可以翻译为:
| A | B | C | D |
/(0*([1-9]\d{2,}[\.\d]*|[7-9]\d[\.\d]*|6(?!0)\d[\.\d]*|60\.\d*[1-9]\d*)\s*em)/g
var str = " 022em | 36em | 43.765 em | 60.0000em | 60em | 60.03em | 61 em | 75em | 80.01em | 100 em | 1562em";
var res = str.replace(/(\s0*([1-9]\d{2,}[\.\d]*|[7-9]\d[\.\d]*|6(?!0)\d[\.\d]*|60\.\d*[1-9]\d*)\s*em)/g,"<b></b>");
document.body.innerHTML = res.split('|').join('<br>');
b{ color: red }
将这些结合起来用于您的用例
/(\(min-width:\s*0*(([1-9]\d{3,}[\.\d]*|[7-9]\d{2}[\.\d]*|6(?!00)\d{2}[\.\d]*|600\.\d*[1-9]\d*)\s*px|(([1-9]\d{2,}[\.\d]*|[7-9]\d[\.\d]*|6(?!0)\d[\.\d]*|60\.\d*[1-9]\d*)\s*em))\))/g
var str = "(min-width: 1025px) | (min-width: 0) and (max-width: 35.625em) | (min-width: 480px) | (min-width: 1025px) | (min-width: 1025px) | (min-width: 64.0625em) | (min-width: 600px) | (min-width: 768px) | (min-width: 1364px) | (max-width: 30em) | (min-width: 48.125em) and (max-width: 54.375em) | (min-width: 48.1875em) and (max-width: 85.25em) | (min-width: 54.375em) and (max-width: 85.25em) | (min-width: 63.4375em) and (max-width: 85.25em) | (min-width: 85.25em) | (min-width: 1364px) | (min-width: 0px) and (max-width: 1363px) | (min-width: 375px) | (min-width: 0px) and (max-width: 1363px) | (min-device-pixel-ratio: 2) | (min-width: 35.625em) | (min-width: 29.375em) | (min-width: 44.375em) | (min-width: 49.375em) | (min-width: 61.25em) | (min-width: 67.5em) | (min-width: 77.1875em) | (min-width: 700px) | (min-width: 850px) | (min-width: 480px) and (max-width: 1866.66667px) | (min-width: 600px) and (max-width: 767px), (min-width: 769px) | (min-width: 37.5em) and (max-width: 63.9375em) | (min-resolution: 1.5dppx) | (min-width: 30em) | (min-width: 37.5em) | (min-width: 64.0625em) | (min-width: 90em) | (min-width: 570px)";
var res = str.replace(/(\(min-width:\s*0*(([1-9]\d{3,}[\.\d]*|[7-9]\d{2}[\.\d]*|6(?!00)\d{2}[\.\d]*|600\.\d*[1-9]\d*)\s*px|(([1-9]\d{2,}[\.\d]*|[7-9]\d[\.\d]*|6(?!0)\d[\.\d]*|60\.\d*[1-9]\d*)\s*em))\)[^|]*)/g,"<b></b>");
document.body.innerHTML = res.split('|').join('<br>');
b{ color: red }
正则表达式图
(from regexper.com)
我在一个项目中工作,我需要删除高于 600px
的断点中的 css 代码我必须使用一些正则表达式来实现它,而且我有点卡住检测一些断点
虽然我有大部分圆顶。
你可以在这里查看https://regex101.com/r/2FIadh/1/
我已经在测试字符串中放入了项目的所有断点,(不幸的是,一些值以 px 为单位,其他以 em 为单位)所以我可以检查我是否有正确的匹配项
目前我正在努力摆脱这些
(min-width: 64.0625em)
(min-width: 90em)
(min-width: 768px)
(min-width: 61.25em)
(min-width: 67.5em)
(min-width: 77.1875em)
(min-width: 700px)
(min-width: 850px)
并保留这些
(min-width: 0px) and (max-width: 1363px)
(min-width: 0px) and (max-width: 1363px)
我怎样才能检测到这些?
我不习惯做正则表达式,所以花了我很长时间,但我试了一下:
匹配值大于 600px
为此,我们可以匹配:
- A) 4 位以上无前导零的数字
- B) 以 7、8 或 9 开头的 3 位数字
- C) 以 6 开头但后面不跟 00 的 3 位数字
- D) 600 后跟不只是零的小数
可以翻译为:
| A | B | C | D |
/(0*([1-9]\d{3,}[\.\d]*|[7-9]\d{2}[\.\d]*|6(?!00)\d{2}[\.\d]*|600\.\d*[1-9]\d*)\s*px)/g
var str = " 0222px | 365px | 435.765 px | 600.0000px | 600px | 600.03px | 601 px | 765px | 800.01px | 1000 px | 15562px";
var res = str.replace(/(\s0*([1-9]\d{3,}[\.\d]*|[7-9]\d{2}[\.\d]*|6(?!00)\d{2}[\.\d]*|600\.\d*[1-9]\d*)\s*px)/g,"<b></b>");
document.body.innerHTML = res.split('|').join('<br>');
b{ color: red }
匹配值大于 60em
为此,我们可以匹配:
- A) 3 位以上无前导零的数字
- B) 以 7、8 或 9 开头的 2 位数字
- C) 以 6 开头但后面不跟 0 的 2 位数字
- D) 60 后跟不只是零的小数
可以翻译为:
| A | B | C | D |
/(0*([1-9]\d{2,}[\.\d]*|[7-9]\d[\.\d]*|6(?!0)\d[\.\d]*|60\.\d*[1-9]\d*)\s*em)/g
var str = " 022em | 36em | 43.765 em | 60.0000em | 60em | 60.03em | 61 em | 75em | 80.01em | 100 em | 1562em";
var res = str.replace(/(\s0*([1-9]\d{2,}[\.\d]*|[7-9]\d[\.\d]*|6(?!0)\d[\.\d]*|60\.\d*[1-9]\d*)\s*em)/g,"<b></b>");
document.body.innerHTML = res.split('|').join('<br>');
b{ color: red }
将这些结合起来用于您的用例
/(\(min-width:\s*0*(([1-9]\d{3,}[\.\d]*|[7-9]\d{2}[\.\d]*|6(?!00)\d{2}[\.\d]*|600\.\d*[1-9]\d*)\s*px|(([1-9]\d{2,}[\.\d]*|[7-9]\d[\.\d]*|6(?!0)\d[\.\d]*|60\.\d*[1-9]\d*)\s*em))\))/g
var str = "(min-width: 1025px) | (min-width: 0) and (max-width: 35.625em) | (min-width: 480px) | (min-width: 1025px) | (min-width: 1025px) | (min-width: 64.0625em) | (min-width: 600px) | (min-width: 768px) | (min-width: 1364px) | (max-width: 30em) | (min-width: 48.125em) and (max-width: 54.375em) | (min-width: 48.1875em) and (max-width: 85.25em) | (min-width: 54.375em) and (max-width: 85.25em) | (min-width: 63.4375em) and (max-width: 85.25em) | (min-width: 85.25em) | (min-width: 1364px) | (min-width: 0px) and (max-width: 1363px) | (min-width: 375px) | (min-width: 0px) and (max-width: 1363px) | (min-device-pixel-ratio: 2) | (min-width: 35.625em) | (min-width: 29.375em) | (min-width: 44.375em) | (min-width: 49.375em) | (min-width: 61.25em) | (min-width: 67.5em) | (min-width: 77.1875em) | (min-width: 700px) | (min-width: 850px) | (min-width: 480px) and (max-width: 1866.66667px) | (min-width: 600px) and (max-width: 767px), (min-width: 769px) | (min-width: 37.5em) and (max-width: 63.9375em) | (min-resolution: 1.5dppx) | (min-width: 30em) | (min-width: 37.5em) | (min-width: 64.0625em) | (min-width: 90em) | (min-width: 570px)";
var res = str.replace(/(\(min-width:\s*0*(([1-9]\d{3,}[\.\d]*|[7-9]\d{2}[\.\d]*|6(?!00)\d{2}[\.\d]*|600\.\d*[1-9]\d*)\s*px|(([1-9]\d{2,}[\.\d]*|[7-9]\d[\.\d]*|6(?!0)\d[\.\d]*|60\.\d*[1-9]\d*)\s*em))\)[^|]*)/g,"<b></b>");
document.body.innerHTML = res.split('|').join('<br>');
b{ color: red }