正则表达式将长表达式字符串拆分为单个表达式数组



我有一个来自 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);

每个匹配项都是一个非空序列:

  1. ('[^']*')字母在'之间不'
  2. ("[^"]*")与上述相同,"
  3. [^,],

((?:.*):(?:.*)),((?:.*):(?:.*)),((?:.*):(?:.*))

如果格式是静态的,则可以使用上述正则表达式格式。

最新更新