регулярное выражение содержит только символы ascii в строке java - PullRequest
0 голосов
/ 07 апреля 2020

я пытаюсь проверить строку, чтобы сопоставить все символы ascii на java с регулярным выражением. если есть только символы ascii, возвращают true, если есть даже один символ, который не является ascii char, возвращают false.

я пробовал следующее:

Pattern.compile("[^ -~\\r\\n\\t]+").matcher(password).find();

, а также пробовал это:

Pattern.compile("[^\\Q A-Za-z0-9!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\\E]").matcher(password).find();

но это не сработало. строка, которую я пытаюсь проверить:

"abตcdefgh12+"

, но оба кода возвращают мне значение true, что означает, что он содержит только символы ascii, которые не ... Я хочу, чтобы эта строка возвращала значение false.

спасибо!

1 Ответ

1 голос
/ 07 апреля 2020

Попробуйте:

public static boolean isPureAscii(String s) {
        return Charset.forName("US-ASCII").newEncoder().canEncode(s);
}

Ссылка: https://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/Charset.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...