Handle different ordering of patterns

Turns out that putting the negative lookahead before the step pattern caused the tests to fail, but they pass otherwise. Perhaps the JS lexer is in fact putting them in priority order?