简体   繁体   中英

Regex for matching Unicode pattern

I am trying to validate a file's content when is uploaded and I am stuck at the Unicode encoding. I am not interested to find Unicode special characters, that are not in the ASCII range. I am trying to find if the content of the file contains at least one Unicode pattern, like \F for example.

For example, I exclude any file that contains the 'script' word, but what if the file contains this word written in Unicode? Sure, Java decodes it into a normal string when it reads the content, but what if I can't rely on this?

So, as far as I have searched on the Internet, I've seen Unicode characters written like \F, or like U+0046. Based on this, I have written the following regex:

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

This means, \\u or U+ followed by four characters. This pattern accomplishes what I desire, but I wonder if there are any other ways to write a Unicode character. It is always \\u or U+? Can it be more or less than 4 characters after \\u or U+?

Thanks

The notation U+ Any-number-of-hex-digits belongs to Unicode will not be functional anywhere in code. In java source code and *.properties \\u\u003c/code> followed by four hex digits is a UTF-16 encoding of Unicode, automatically parsed.

The pattern to search for that:

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

Or a String.contains on:

"\\u"

In other languages than Java \\Uxxxxxx (six hex chars) is possible, for the full UTF-32 range. Unfortunately upto Java 8 not so.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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