
肯定先読み (?=bar)
肯定先読みは(?=bar)の形式を先に覚える。
var str1 = 'foobar'; var str2 = 'foobaz'; console.log(/foo(?=bar)/.test(str1)); // => true console.log(/foo(?=bar)/.test(str2)); // => false
否定先読み (?!bar)
否定先読みは否定のため=が!になると覚える。
var str1 = 'foobar'; var str2 = 'foobaz'; console.log(/foo(?!bar)/.test(str1)); // => false console.log(/foo(?!bar)/.test(str2)); // => true
肯定後読み (?<=foo)
肯定先読みが右にあったのが肯定後読みだと左に記述するため、?=の真ん中に<を入れて?<=となると考えるとわかりやすい。
var str1 = 'foobar'; var str2 = 'foobaz'; console.log(/(?<=foo)bar/.test(str1)); // => true console.log(/(?<=foo)bar/.test(str2)); // => false
否定後読み (?<!foo)
肯定後読みの?<=が否定のため?<!になると覚える。
var str1 = 'foobar'; var str2 = 'foobaz'; console.log(/(?<!foo)bar/.test(str1)); // => false console.log(/(?<!bar)baz/.test(str2)); // => true
$1での置換はできない
以下のように(?=bar)を$1で置換することはできない。
var str = 'foobar'; console.log(str.replace(/foo(?=bar)/, 'test $1')); // => 'test $1bar'