/ll/.exec(“hello”)
[“ll”, index: 2, input: “hello”, groups: undefined]

/(ll)/.exec(“hello”)
(2) [“ll”, “ll”, index: 2, input: “hello”, groups: undefined]

/h(a|e)llo/.exec(“hello”)
(2) [“hello”, “e”, index: 0, input: “hello”, groups: undefined]

/h(a|e)llo/.exec(“hallo”)
(2) [“hallo”, “a”, index: 0, input: “hallo”, groups: undefined]

let exp = “a && b || c”
undefined

exp
“a && b || c”

exp.split(” “)
(5) [“a”, “&&”, “b”, “||”, “c”]

exp = “a&&b || c”
“a&&b || c”

exp.split(” “)
(10) [“a&&b”, “”, “”, “”, “”, “||”, “”, “”, “”, “c”]

exp.split(/&&|||/)
(3) [“a”, “b “, “ c”]

“a.b.c”.split(“.”)
(3) [“a”, “b”, “c”]

“a.b.c”.split(/./)
(3) [“a”, “b”, “c”]

“a.b.c”.split(/(.)/)
(5) [“a”, “.”, “b”, “.”, “c”]

exp.split(/(&&|||)/)
(5) [“a”, “&&”, “b “, “||”, “ c”]

exp.split(/(&&|||)/).map(str => str.trim())
(5) [“a”, “&&”, “b”, “||”, “c”]