5

我有以下正则表达式:

String regExpression = "^[a-zA-Z0-9+,. '-]{1,"+maxCharacters+"}$";

这对我来说很好,除了它不允许任何 UTF-8 变音符号(Ă ă Â â Î î Ș ș Ț ț)。

除了它已经做的之外,我只需要我当前的正则表达式来接受其中的变音符号。

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

4

1 回答 1

7

您需要查看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");
        }

    }
}

这对我有用。

于 2012-04-17T09:54:26.720 回答