В PCRE \x{####}
можно использовать как эквивалент \u####
в JavaScript.
Во-вторых, шаблон JavaScript предназначен для сопоставления с кодовыми точками, закодированными с использованием UTF-16. Но поскольку мы будем сопоставлять сами кодовые точки в PCRE, нам нужно «декодировать» суррогатные пары.
После внесения обоих изменений получаем:
[\xA9\xAE\x{2000}-\x{3300}\x{1F000}-\x{1FBFF}]
(Я не знаю Lua, поэтому я оставлю его для предоставления строкового литерала, который создает эту строку.)
Обратите внимание, что ваш шаблон соответствует больше, чем то, что большинство людей считают смайликами. Смайлики находятся в блоке «Смайлики». Этот блок (в настоящее время) охватывает кодовые точки от U+1F600 до U+1F64F. В Perl вы можете использовать \p{Block=Emoticons}
или даже просто \p{Emoticons}
, чтобы сопоставить их, но они, похоже, не поддерживаются PCRE. Поэтому, чтобы соответствовать только смайликам, вы должны использовать следующее:
[\x{1F600}-\x{1F64F}]
person
ikegami
schedule
08.04.2019
[\ud000-\udfff]
не имеет смысла. Должно быть[\udc00-\udfff]
- person ikegami   schedule 08.04.2019