我有一个来自 Angular [ngClass] 指令的表达式字符串,其中包含多个表达式及其相应的键,用逗号分隔。
'background_orange':row.columnname.split(',')[4] == 1,'red:color':test==='testname','yellow:color':test==='testname'
当我尝试使用 .split(','( 函数将上述表达式字符串拆分为单个表达式数组时,它会在各个表达式之间拆分。
法典:
var temp = "'background_orange':row.columnname.split(',')[4] == 1,'red:color':test==='testname','yellow:color':test==='testname'";
var result = temp.split(',');
console.log(result);
输出:
["'background_orange':row.columnname.split('", "')[4] == 1", "'red:color':test==='testname'", "'yellow:color':test==='testname'"]
预期成果:
["'background_orange':row.columnname.split(',')[4] == 1", "'red:color':test==='testname'", "'yellow:color':test==='testname'"]
我尝试构建正则表达式来提取单个表达式,但只能使用以下正则表达式提取表达式键
正则表达式:
'b(.+?)':
提取上述预期模式的正则表达式是什么
以下正则表达式在,
处拆分字符串,但忽略"
或'
之间的字符串内的所有,
:
var temp = "'background_orange':row.columnname.split(',')[4] == 1,'red:color':test==='testname','yellow:color':test==='testname'";
var r = /(('[^']*')|("[^"]*")|[^,])+/g
var result = temp.match(r)
console.log(result);
每个匹配项都是一个非空序列:
('[^']*')
字母在'
之间不'
("[^"]*")
与上述相同,"
[^,]
不,
炭
((?:.*):(?:.*)),((?:.*):(?:.*)),((?:.*):(?:.*))
如果格式是静态的,则可以使用上述正则表达式格式。