Specifically in Python 3.3 and above, is it sufficient to check for orphan surrogates by using the simple match:
re.search(r\'[\\uD800-\\uDFFF]\', s)
Yes, that's correct. Code units 0xD800–0xDFFF don't represent valid characters in wide Unicode strings, and in Python 3.3+ (following PEP 393) all Unicode strings are effectively wide.