◆ new RegExp("")
◆ /(?:)/ 

正規表現を使った検索などで正規表現が空文字だとどうなるのか なんとなく気になったのでやってみようとしました

var split = "abc".split(//)
console.log(split)

var match = "abc".match(//)
console.log(match)

Uncaught SyntaxError: Unexpected token var(...)


エラーですね

「//」 は正規表現リテラルじゃなくてコメントアウトになります


ならどうやって空文字正規表現を作るの?
意味無いようなものだから作れないの??

なんて考えていたら普通にコンストラクタ使えばいいと気づきました
var split = "abc".split(new RegExp(""))
console.log(split)

var match = "abc".match(new RegExp(""))
console.log(match)
["a", "b", "c"]
["", index: 0, input: "abc"]

結果は 普通に空文字と同じです

でもリテラルでかけないってなんか気持ち悪いなぁ
と思っていたら
var split = "abc".split(/()/)
console.log(split)

var match = "abc".match(/()/)
console.log(match)
これでいけるんじゃ?
["a", "", "b", "", "c"]
["", "", index: 0, input: "abc"]

空文字がキャプチャされてますね

なので
var split = "abc".split(/(?:)/)
console.log(split)

var match = "abc".match(/(?:)/)
console.log(match)
["a", "b", "c"]
["", index: 0, input: "abc"]
これで おっけい

でも空文字なのに 4 文字も書いていて結局気持ち悪い