javascript - 如何解析盒子阴影和边框属性以分隔javascript中的值?
问题描述
我正在尝试将这些字符串解析为单独的值,但我尝试了 .split(" ") 它无法正常工作
0px none rgb(98, 98, 98) // border
rgba(0, 0, 0, 0.75) 10px 10px 5px 0px // box Shadow
我的方法
"0px none rgb(98, 98, 98)".split(" "); // it also splits rgb spaces
"rgba(0, 0, 0, 0.75) 10px 10px 5px 0px".split(" ");
我想要最终结果
[ "0px", "none", "rgb(98, 98, 98)" ]
[ "rgba(0, 0, 0, 0.75)", "10px", "10px", "5px" , "0px"]
提前致谢
解决方案
您可以改用正则.match
表达式
str1 = "0px none rgb(98, 98, 98)"
str2 = "rgba(0, 0, 0, 0.75) 10px 10px 5px 0px"
regexp = /[^\s\(]+(\(.+\))?/g
str1.match(regexp)
=> (3) ["0px", "none", "rgb(98, 98, 98)"]
str2.match(regexp)
=> (5) ["rgba(0, 0, 0, 0.75)", "10px", "10px", "5px", "0px"]
正则表达式的意思是:
[^\s\(]+
任何不是空格或字符的字符(
(\(.+\))?
可选地后跟一个(...)
字符串
我想同样有更干净的正则表达式,这只是我想出的那个
推荐阅读
- javascript - 如何使用reduce从具有对象数组的对象数组中找到最大值
- python - 如何正确显示从远程文件服务器存储的图像到 django HTML 模板?
- android - 如何在颤动中打开文件选择器?
- python - django - 从另一个序列化程序调用后没有返回
- python - python Xgboost中makeClassifTask等效项中的阻塞因素是什么
- c++ - 在 gtest 中调用另一个 TEST_F 中的一个 TEST_F
- c# - 如何从查询结果中提取特定的数据库列
- node.js - 通过使用 Oppo 从直接相机拍摄图像上传图像时,Graphql“网络错误:无法获取”
- php - Livewire 表单向导未滚动到第二页的顶部
- c++ - 合并两个排序的向量