Page 1 of 1

RegExp bug ?

Posted: February 10th, 2017, 9:44 am
by predat
Hello,
 
it's drive me crazy...
I'm have test this sample code with node.js, in a developper console (firefox), in ExtenSript Toolkit and in AfterEffects:
 

Code: Select all

var reg = new RegExp("^(?!.*auto-save).*aep$");
var string1 = "Comp.aep"
var string2 = "Comp auto-save.aep"
alert(reg.test(string1) + " " + reg.test(string2));
What i want is find "aep" in a string but exclude "auto-save"; easy...no?
All javascript engines return correct result ("true false") but not ExtendSript nor AfterEffects ("true true").

Re: RegExp bug ?

Posted: February 23rd, 2017, 5:57 am
by runegan
It seems to be a bug, but I can't find any information if that is because negative lookahead regex was not implemented in the javascript engine extendscript is using or a bug in extendscript itself.

Either way, you can achieve what you are trying to do by using two regexes and testing the string against both:

Code: Select all

var reg1 = new RegExp("aep$");
var reg2 = new RegExp("auto-save");
var string1 = "Comp.aep"
var string2 = "Comp auto-save.aep"
alert((reg1.test(string1) && !reg2.test(string1)) + " " + (reg1.test(string2) && !reg2.test(string2)));
// Alerts "true false"