I believe all internal state is compiled before any usage can occur, so Regex is mostly save to use from different threads except that it can include arbitrary code that may not be sendable:
I think Regex being non-sendable is a similar issue to many of its uses being throwing. Since Regex is closer to an arbitrary parser than a finite state automaton, you have a lot less guarantees.