简体   繁体   English

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

[英]Java Regular expression for special characters across all languages

In my user input field, I want to allow a combination of certain special characters, letters and numbers. 在我的用户输入字段中,我想允许某些特殊字符,字母和数字的组合。 I should make sure that a regular expression pattern allows this set when typed from any language . 我应该确保正则表达式模式允许从任何语言键入此集合。 Basically this regular expression that I have constructed, should support unicode representations also. 基本上我构建的这个正则表达式也应该支持unicode表示。 How do I achieve this using Pattern class in Java? 如何在Java中使用Pattern类实现此目的?

Sample code that I tried is given here. 我试过的示例代码在这里给出。 But this does not cover letters/numbers in any other language apart from English. 但这并不包括除英语之外的任何其他语言的字母/数字。

private static final String ADDRESS_LINE_PATTERN = "[A-Za-z0-9,\\s#\\-.]+";


    public static boolean isInputValid(String patternToValidate, String input){
        Pattern p = Pattern.compile(patternToValidate);
        Matcher m = p.matcher(input);
        boolean b = m.matches();
        return b;

    }

public static void main(){
String value = "コロン";
System.out.println("Value:" + value + " - valid? " + isInputValid(ADDRESS_LINE_PATTERN, value));
}

You may use \\\\p{Alnum} to match any kind of letter or digit from any language. 您可以使用\\\\p{Alnum}来匹配任何语言的任何类型的字母或数字。

 private static final String ADDRESS_LINE_PATTERN = "[\\p{Alnum},\\s#\\-.]+";

See Pattern javadoc for more info. 有关详细信息,请参阅Pattern javadoc

Normally, in Unicode aware regex engines, the word class \\w will 通常,在Unicode 识别正则表达式引擎中, 单词 class \\w
include all alpha-num's from any language. 包括来自任何语言的所有alpha-num。

You could use the negative of it \\W in a negative class [^\\W] , add whatever 你可以使用它的负面\\W负类[^\\W]添加任何
you don't want _ , then OR it with special characters you do want. 你不想要_ ,然后用你想要的特殊字符它。

(?U)(?:[^\W_]|[-,.+\s#])+ 

edit - re: @nhahtdh comment 编辑 - 重新:@nhahtdh评论
Added Java (?U) inline modifier for UNICODE_CHARACTER_CLASS UNICODE_CHARACTER_CLASS添加了Java (?U)内联修饰符
(I assume correct) (我认为是正确的)

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

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