Unicode parsing in PHP
Your code seems legit to me, so I'll try to answer some of your questions.
preg_match() uses UTF-8 input based on code points, so you don't have to worry about that.
The difference between \xYY and \x{YYYY} is that the first one accepts either one or two characters after control \x (so, up to 256-th code point), and the latter one is universal and accepts range which covers all Unicode table.
The u flag for RegExp pattern indicates that engine should treat the pattern as Unicode, it doesn't do anything with the text under test. So you can omit this flag in simple patterns like /[0-9]/. The last two code snippets also correct.