繁体   English   中英

用于匹配 Unicode 模式的正则表达式

[英]Regex for matching Unicode pattern

我正在尝试在上传文件时验证文件的内容,但我坚持使用 Unicode 编码。 我对找到不在 ASCII 范围内的 Unicode 特殊字符不感兴趣。 我试图找出文件的内容是否至少包含一种 Unicode 模式,例如 \F。

例如,我排除了任何包含“script”字样的文件,但如果该文件包含用 Unicode 编写的这个字词怎么办? 当然,Java 在读取内容时会将其解码为普通字符串,但是如果我不能依赖它呢?

所以,据我在互联网上搜索,我看到过像\F 这样写的Unicode 字符,或者像U+0046 这样写的Unicode 字符。 基于此,我编写了以下正则表达式:

(\\u|U\+)....

这意味着 \\u 或 U+ 后跟四个字符。 这种模式实现了我的愿望,但我想知道是否还有其他方法可以编写 Unicode 字符。 它总是 \\u 或 U+? \\u 或 U+ 之后可以多于或少于 4 个字符吗?

谢谢

属于 Unicode 的符号 U+任意数量的十六进制数字在代码中的任何地方都不起作用。 在 java 源代码和 *.properties \\u\u003c/code>后跟四个十六进制数字是 Unicode 的 UTF-16 编码,自动解析。

要搜索的模式:

"\\\\u[0-9A-Fa-f]{4}"

或者一个 String.contains :

"\\u"

对于完整的 UTF-32 范围,在 Java \\Uxxxxxx其他语言中\\Uxxxxxx (六个十六进制字符)是可能的。 不幸的是,Java 8 并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM