Вы можете использовать
Pattern.compile("[|\\\\?*<\":>+\\[\\]/']+").matcher(name).matches()
Регулярное выражение означает:
[
- начало положительного класса символов: |
- a pipe \\
- обратная косая черта sh (требуется дополнительная обратная косая черта в строковом литерале, "\\\\"
) ?
- знак вопроса *
- звездочка <
- открытая угловая скобка "
- двойная кавычка :
- двоеточие >
- закрывающая угловая скобка +
- плюс \[
- символ [
(необходимо экранировать, когда [
находится внутри класса символов) \]
- символ ]
(должен быть экранирован, когда ]
находится внутри класса символов) /
- форвард sla sh '
- одиночная кавычка
]+
- конец класса символов, 1 или более вхождений.
Таким образом, это будет проверять строку, которая состоит только из 1 или более экземпляров этих символов. Если вам нужно обратное, добавьте ^
после первого [
:
Pattern.compile("[^|\\\\?*<\":>+\\[\\]/']+").matcher(name).matches()
// ^
Java demo :
String name = "Wiktor Stribiżew";
System.out.println(Pattern.compile("[^|\\\\?*<\":>+\\[\\]/']+").matcher(name).matches());
// => true