Ответ 1
Я никогда не использовал \\p{ASCII}
, но я использовал ^[\\u0000-\\u007F]*$
Какое регулярное выражение будет соответствовать любому символу ASCII в java?
Я уже пробовал:
^[\\p{ASCII}]*$
но обнаружил, что он не соответствует многим вещам, которые я хотел (например, пробелам, круглым скобкам и т.д.). Я надеюсь избежать явного перечисления всех 127 символов ASCII в формате, например:
^[[email protected]#$%^*(),.<>~`[]{}\\/+=-\\s]*$
Я никогда не использовал \\p{ASCII}
, но я использовал ^[\\u0000-\\u007F]*$
Первая попытка была почти правильной
"^\\p{ASCII}*$"
Для JavaScript это будет /^[\x00-\x7F]*$/.test('blah')
Я думаю, вопрос о получении символов 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;
}
Вышеупомянутая программа удалит строку non ascii и вернет строку. Спасибо @Oleg Pavliv за образец.
Для ex:
raw = + 919986774157
asciiString = +919986774157
Если вам нужны только печатные символы ASCII, вы можете использовать ^[ -~]*$
- то есть все символы между пробелом и тильдой.
https://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart