Java регулярное выражение для сопоставления символов ASCII - PullRequest
11 голосов
/ 22 февраля 2011

Какое регулярное выражение будет соответствовать любому символу ASCII в java?

Я уже пробовал:

^[\\p{ASCII}]*$

, но обнаружил, что он не соответствует многим вещам, которые я хотел (например,пробелы, скобки и т.д ...).Я надеюсь избежать явного перечисления всех 127 символов ASCII в таком формате, как:

^[a-zA-Z0-9!@#$%^*(),.<>~`[]{}\\/+=-\\s]*$

Ответы [ 5 ]

30 голосов
/ 22 февраля 2011

Первая попытка была почти правильной

"^\\p{ASCII}*$"
8 голосов
/ 22 февраля 2011

Я никогда не использовал \\p{ASCII}, но я использовал ^[\\u0000-\\u007F]*$

1 голос
/ 23 февраля 2016

Если вам нужны только печатные символы ASCII, вы можете использовать ^[ -~]*$ - то есть все символы от пробела до тильды.

https://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart

1 голос
/ 14 октября 2011

Для JavaScript это будет /^[\x00-\x7F]*$/.test('blah')

0 голосов
/ 07 декабря 2014

Я думаю, что вопрос о получении символов ASCII из необработанной строки, которая имеет как ASCII, так и специальные символы ...

public String getOnlyASCII(String raw) {
    Pattern asciiPattern = Pattern.compile("\\p{ASCII}*$");
    Matcher matcher = asciiPattern.matcher(raw);
    String asciiString = null;
    if (matcher.find()) {
        asciiString = matcher.group();
    }
    return asciiString;
}

Вышеприведенная программа удалит строку не ascii и вернет строку. Спасибо @Oleg Pavliv за образец.

Например:

raw = + 919986774157

asciiString = + 919986774157

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