所有语言中特殊字符的 Java 正则表达式

Vin*_*ran 5 java regex

在我的用户输入字段中,我想允许某些特殊字符、字母和数字的组合。我应该确保从任何语言键入时正则表达式模式都允许此设置。基本上我构建的这个正则表达式也应该支持 unicode 表示。如何使用 Java 中的 Pattern 类来实现这一点?

\n\n

这里给出了我尝试过的示例代码。但这不包括除英语之外的任何其他语言的字母/数字。

\n\n
private static final String ADDRESS_LINE_PATTERN = "[A-Za-z0-9,\\\\s#\\\\-.]+";\n\n\n    public static boolean isInputValid(String patternToValidate, String input){\n        Pattern p = Pattern.compile(patternToValidate);\n        Matcher m = p.matcher(input);\n        boolean b = m.matches();\n        return b;\n\n    }\n\npublic static void main(){\nString value = "\xe3\x82\xb3\xe3\x83\xad\xe3\x83\xb3";\nSystem.out.println("Value:" + value + " - valid? " + isInputValid(ADDRESS_LINE_PATTERN, value));\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Avi*_*Raj 5

您可以用来\\p{Alnum}匹配任何语言的任何类型的字母或数字。

 private static final String ADDRESS_LINE_PATTERN = "[\\p{Alnum},\\s#\\-.]+";
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Patternjavadoc 。

  • @VinodJayachandran 日语中的“コron”一词只是英语中“冒号”一词的翻译。它是一个*单词*,而不是一个特殊字符。但你到底想匹配什么?有很多特殊字符,哪些是有效的,哪些是无效的? (3认同)