使用正则表达式删除除中文字符以外的所有字符?

Dav*_*801 1 php regex

我有一个用中文写的字符串.

它包含中文字符和其他填充内容,如空格,逗号,感叹号等,均以UTF8编码.

使用带有latin1字符串的正则表达式,我可以使用preg_replace[a-zA-Z]清除它并删除填充符.

如何删除所有填充项目时,如何在中文字符串中仅保留中文"字母"字符?

Tot*_*oto 5

根据这个文件,这里是unicode中文字符范围:

表12-2.包含汉字表意文字的块

Block                                Range         Comment
CJK Unified Ideographs               4E00–9FFF     Common
CJK Unified Ideographs Extension A   3400–4DBF     Rare
CJK Unified Ideographs Extension B   20000–2A6DF   Rare, historic
CJK Unified Ideographs Extension C   2A700–2B73F   Rare, historic
CJK Unified Ideographs Extension D   2B740–2B81F   Uncommon, some in current use
CJK Compatibility Ideographs         F900–FAFF     Duplicates, unifiable variants, corporate
characters
CJK Compatibility Ideographs Supplement 2F800–2FA1F Unifiable variants
Run Code Online (Sandbox Code Playgroud)

你可以像这样使用它:

preg_replace('/[^\u4E00-\u9FFF]+/', '', $string);
Run Code Online (Sandbox Code Playgroud)

要么

preg_replace('/\P{Han}+/', '', $string);
Run Code Online (Sandbox Code Playgroud)

\P否定的地方在哪里\p

看到这里的所有unicode scripts