Make a regex polyglot
87 bytes, 5 flavours, (87+10)/25 = 3.88

^(((?=W)[[:word:]&amp;&amp;]art|Ho(?=a)\ar|Bre(?=ez)[]e]\z|E(?=dg)[[d]]g)y|(?=Da)[D-[E]]apper)$


I've gone with the easy to test flavours for now, which are:


Regex101: PCRE (PHP), Javascript, Python
Regex Storm: .NET
Rubular: Ruby


The general structure is ^((...)y|...)$, i.e. factoring out the trailing ys and adding anchors.

Warty (PCRE)

(?=W)[[:word:]&amp;&amp;]art


In PCRE and Ruby, [[:word:]] is a POSIX character class matching a word character — in other flavours you get a [[:word:] character class then literal &amp;&amp;], which fails the (?=W) assert. To make Ruby fail, &amp;&amp; is used to intersect the POSIX class with nothing, whereas in PCRE &amp;&amp; has no special meaning.

Hoary (Javascript)

Ho(?=a)\ar


For whatever reason, Javascript is the only flavour out of the bunch where \a is a literal a — in other flavours it matches the bell character (ASCII 7).

Breezy (Python)

Bre(?=ez)[]e]\z


In Python and Javascript, \z is a literal z — in the other flavours it is equivalent to the $ end of string anchor. To make Javascript fail we use the char class []e], which is an empty char class [] then literal e] in Javascript, and a two-char class []e] in Python.

Dapper (.NET)

(?=Da)[D-[E]]apper


In .NET, [D-[E]] is a set difference, removing the set [E] from [D]. In PCRE, Javascript and Python, we have the class [D-[E] then a literal ]. Ruby's a little different, but for some reason it parses as a class [D-[E]] which only matches E, and I have yet to figure out why...

Edgy (Ruby)

E(?=dg)[[d]]g


Ruby allows char classes inside char classes, so [[d]] is actually equivalent to [d], or just d. In the other flavours, we have [[d] then a literal ].