I've confirmed this behavior. It looks like a problem in the code that deals with negated character classes within lookbehind structures (positive and negative). Since it works if more than one character is within the negated character class, my guess is that there may be a loop/comparison that starts one integer too high or low.

(?<=[J]) <- works
(?<![J]) <- works
(?<=[^J]) <- fails
(?<![^J]) <- fails

Here is a temp workaround:

(?<=[^JJ]) <- works

-genius_at_work