In this case, you are using invalid surrogate pairs as single characters, so PCRE returns -10 to indicate a bad UTF-8 combination. $regex() will return -10.
I have looked at
versions.txt and the help file and it looks like the fact that $regex() can return negative values has never been documented. Some of the scripts I have seen check for ($regex() > 0) while others just do ($regex()) using it as a boolean.
Although it has behaved this way for a long time, there does not seem to be much of a use case for negative values. It might be safer to change $regex() to return only >= 0.