0

我有一个来自 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(.+?)':

提取上述预期模式的正则表达式是什么

4

2 回答 2

0

以下正则表达式将您的字符串拆分为 at,但忽略or,之间的所有内部字符串:"'

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. [^,]一个字符不存在,
于 2019-12-30T15:02:07.033 回答
0

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

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

于 2019-12-30T14:40:55.913 回答