我有一个正则表达式阻止字符串中的无效字符,但它也阻止中文字符,我不想要它。请帮帮我。下面是我正在使用的正则表达式字符串。
String re = "[^\\x09\\x0A\\x0D\\x20-\\xD7FF\\xE000-\\xFFFD\\x10000-x10FFFF]";
感谢您的期待!
答案 0 :(得分:6)
从Java 7开始,您可以使用Unicode properties/scripts。
E.g。您可以使用属性\p{L}
来匹配任何语言的字母。或者脚本\p{IsHiragana}
匹配平假名中包含的字符。您需要检查哪种脚本符合您的需求。
请参阅docs.Oracle.com for more details about regex and Unicode
也可以匹配相反的情况,例如: \P{L}
匹配每个字符,即 NOT 一个字母,或者您只是将\p{L}
添加到您的否定字符类,而不是应该定义字母的范围。