我的字符串是:
'{ color : rgb(0,0,0);background-color : rgb(255, 255, 255);}'
我想要匹配颜色和背景。
我的正则表达式是
a = new RegExp(prop + '[^;]+?\\;','g');
,其中
prop = `color` or `background-color`
背景匹配很好,但颜色匹配。我试过了
a =new RegExp('[^d-]'+prop + '[^;]+?\\;','g');
匹配;background-color : rgb(255, 255, 255);
,但我只想background-color : rgb(255, 255, 255);
。
1)我如何得到它?
2)如果我想从字符串中删除background-color
,那么regexp是什么?
答案 0 :(得分:1)
您可以先使用此正则表达式匹配所有属性:
/([\w-]+)\s*:\s*(.+?)[;}]/g
使用此输入:
var css = '{\
color: rgb(0,0,0);\
background-color: rgb(255, 255, 255);\
font-size: 2em;\
margin: 0;\
padding: 4px;\
font-style: italic;\
text-align: center;\
}'
它给出了这个输出:
var output = {}
s.replace(/([\w-]+)\s*:\s*(.+?)[;}]/g, function(_, k, v) {
output[k] = isNaN(v) ? v : +v // cast number if necessary
})
console.log(output)
/*^ { color: 'rgb(0,0,0)',
'background-color': 'rgb(255, 255, 255)',
'font-size': '2em',
margin: 0,
padding: '4px',
'font-style': 'italic',
'text-align': 'center' }
*/
然后您可以动态访问所需的键:
var prop = 'color'
output[prop] //=> rgb(0,0,0)
答案 1 :(得分:0)
您可以使用此正则表达式并使用已捕获的组#1代替:
var prop = 'color';
var re = new RegExp('([^-])' + prop + '\\s*:[^;]+\;');
var s = '{color : rgb(0,0,0);background-color : rgb(255, 255, 255);}'
var r = s.replace(re, '$1 '); // replaces color property by a space
//=> { background-color : rgb(255, 255, 255);}