Kachet V8 automatically compiled regular expressions?

So, I know that in Javascript creating a regular expression, it is automatically compiled and if this regular expression is stored in a variable, it will be reused without recompilation. Example:

var re = /[Ff]oo|[Bb]ar/; "Foo".match(re); // ["Foo"] "Baz".match(re); // null 

However, duplicated regular expressions are recompiled or V8 (Chrome / Node.js) intelligently reuse them (for example, does PHP with preg_ * functions)?

 function isFooBar(str) { return str.match(/[Ff]oo|[Bb]ar/); } isFooBar("Foo"); // ["Foo"] isFooBar("Baz"); // null 

So, to clarify, I know that the first example leads to a single compilation of the regular expression. But what about the second example?

+8
javascript regex v8
source share
2 answers

Ok, let's find out.

 // http://stackoverflow.com/questions/3466850/complex-password-regular-expression function isFooBar(str) { return str.match(/^(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(?:(?=.*[az])(?:(?=.*[AZ])(?=.*[\d\W])|(?=.*\W)(?=.*\d))|(?=.*\W)(?=.*[AZ])(?=.*\d)).{8,}(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[AZ]).*$)?(^(?=.*\d)(?=.*[az])(?=.*[@#$%^&+=]).*$)?(^(?=.*\d)(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?(^(?=.*[az])(?=.*[AZ])(?=.*[@#$%^&+=]).*$)?$/); } console.time('1');isFooBar("Foo");console.timeEnd('1'); console.time('2');isFooBar("Bar");console.timeEnd('2'); 

(Open the console and run the code snippet above to see if there are any results for your browser.)

In Node.js 0.10.36 (V8 3.14.5.9):

 1: 65ms 2: 0ms 

In io.js 1.6.3 (V8 4.1.0.27):

 1: 32ms 2: 0ms 

So, I think the answer to your question is YES , the V8 is able to automatically cache the regular expression.


EDIT:

Despite the fact that the V8 is capable of such optimization, in fact, it cannot always use this optimization. V8 has many complex heuristics for different cases, for example, when to embed a function, when to optimize a function, when to de-optimize a function, etc. If you are not a V8 developer, many of these heuristics look strange or unexpected, or both.

Not being a V8 developer myself, I don't know the answer to a specific question about whether regular expressions are always cached automatically. However, even if I know the answer, it may change in the future. So when you write code, I would still recommend storing the regular expression in such a way that it is clear what the intent is for this variable. And for the example above, this means that output the variable regex out of the isFooBar() function.

Another problem is how this regular expression is created. The example above and in the OP question is declared with a regular expression literal . However, if you use the new RegExp() constructor, V8 will not be allowed to cache the regular expression, as it may change at run time.

+11
source share

http://code.google.com/p/v8/issues/detail?id=933#c3

In Chrome 9, we removed the primitive caching of RegExp results. This means that we no longer take unrealistically little time to repeat the same operation on the same input again and again. Caching was originally added to point to those tests that were too simplified (at the time we were turned on), it was too easy to β€œplay” by adding such caching (which has nothing to do with real scenarios). Since then, most of the tests have improved so much that we decided to remove caching (and its inevitable overhead). The cache was added to version v8 of version 4083 (released in Chrome 5) and removed in version 5755 (will be in Chrome 9)

0
source share

All Articles