RegExp bug ?

Find out why the . goes before the /

Moderator: Paul Tuersley

Post Reply
predat
Posts: 1
Joined: November 18th, 2008, 2:53 am

February 10th, 2017, 9:44 am

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").
runegan
Posts: 22
Joined: November 4th, 2016, 3:18 pm
Contact:

February 23rd, 2017, 5:57 am

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"
Post Reply