(a) If an emoji are chosen from the emoji picker, it will lack for a space before the first colon :, not only in Chinese posts, but in English posts as well. Users will get a not rendered a:smile: (a:smile:) if they input a and then select (:smile:) from the emoji picker.
(b) A colon : after a Latin character won’t cause auto-completion, yet a colon after a CJK Unihan character will. It could be solved exactly by (2).
To solve (a), (3) should be implemented in the emoji picker, not / not just in auto-completion.
(1) and (4) are in different logic.
To check if a character is in Chinese or not, we could try:
Though I don’t know whether the regular expression above will provide higher performance.