将长表达式字符串拆分为单个表达式数组的正则表达式
Regex to split a long expressions string into an array of individual expressions
我有一个来自 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);
每个匹配项都是一个非空序列:
('[^']*')
个字母不在 '
'
之间
("[^"]*")
同上 "
[^,]
不是 ,
的字符
我有一个来自 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);
每个匹配项都是一个非空序列:
('[^']*')
个字母不在'
'
之间
("[^"]*")
同上"
[^,]
不是,
的字符