正则表达式变音符号

Fof*_*ole 5 java regex

我有以下正则表达式:

String regExpression = "^[a-zA-Z0-9+,. '-]{1,"+maxCharacters+"}$";
Run Code Online (Sandbox Code Playgroud)

这正常工作对我来说,只是,它不允许任何UTF-8变音符号(A A A A I I S式T T).

除了它已经做的事情之外,我只需要我现在的正则表达式来接受变音符号.

任何帮助表示赞赏.谢谢.

Hau*_*idt 6

您需要查看POSIX字符类来捕获它们.遗憾的是,Java Regex不支持特定语言的POSIX类,但可能适用\p{Graph} A visible character: [\p{Alnum}\p{Punct}]或不 \p{Print} A printable character: [\p{Graph}\x20]适合.

索林建议最合适的可能是\p{L}(信).

import java.util.regex.Pattern;

public class Regexer {

    public static void main(String[] args) {
        int maxCharacters = 100;
        String data = "? ? Â â Î î ? ? ? ?";
        String pattern = "^[\\p{L}0-9+,. '-]{1," + maxCharacters + "}$";

        Pattern p = Pattern.compile(pattern);

        if (p.matcher(data).matches()) {
            System.out.println("Hit");
        } else {
            System.out.println("No");
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

这适合我.

  • 或者,甚至更好,[\ p {L}]这意味着信. (6认同)