0
var expression = "[AccNum]==true&&[AccNum]==[ARID]&&[AccNum]==aaaa || [ARID]!=true&&[DOB]>[ARID] || [DOB]>bbb&&[DOS]>=[ARID]&&[DOS]<[Gender]&&[66642]<=cccc&&[66642] In (ddd,fff,ggg) || [FirstName] NotIn (hhh,jjj,kkk)&&[FirstName] StartsWith lll || [Gender] EndsWith mmm";

I need to split this expression into an array like,

var arr = [ "[AccNum]==true","&&", "[AccNum]==[ARID]", "&&", "[AccNum]==aaaa", "||", "[ARID]!=true", "&&", "[DOB]>[ARID]", "||", "[DOB]>bbb", "&&", "[DOS]>=[ARID]", "&&", "[DOS]<[Gender]", "&&", "[66642]<=cccc", "&&", "[66642] In (ddd,fff,ggg)", "||", "[FirstName] NotIn (hhh,jjj,kkk)", "&&", "[FirstName] StartsWith lll", "||", "[Gender] EndsWith mmm" ]

Here keys are "&&" and "||" but I need the keys as well in the array.

Endless
  • 34,080
  • 13
  • 108
  • 131
Arun
  • 378
  • 1
  • 11

2 Answers2

2

var expression = "[AccNum]==true&&[AccNum]==[ARID]&&[AccNum]==aaaa || [ARID]!=true&&[DOB]>[ARID] || [DOB]>bbb&&[DOS]>=[ARID]&&[DOS]<[Gender]&&[66642]<=cccc&&[66642] In (ddd,fff,ggg) || [FirstName] NotIn (hhh,jjj,kkk)&&[FirstName] StartsWith lll || [Gender] EndsWith mmm";

var converted = expression
                .split(/(&&|\|\|)/)
                .map(item => item.trim());

console.log(converted)

RegEx delimiter wrapped in parentheses will push the delimiter in the array along with the items, thanks to: https://stackoverflow.com/a/12002085/3499595

Map for trimming each item, removing spaces.

yuriy636
  • 11,171
  • 5
  • 37
  • 42
1

Try this:

var expression = "[AccNum]==true&&[AccNum]==[ARID]&&[AccNum]==aaaa || [ARID]!=true&&[DOB]>[ARID] || [DOB]>bbb&&[DOS]>=[ARID]&&[DOS]<[Gender]&&[66642]<=cccc&&[66642] In (ddd,fff,ggg) || [FirstName] NotIn (hhh,jjj,kkk)&&[FirstName] StartsWith lll || [Gender] EndsWith mmm";
var splitArray = expression.split(/(&&|\|\|)/g);
Amit
  • 11
  • 1