Отсутствует закрывающая скобка - PullRequest
2 голосов
/ 17 апреля 2020

Отсутствует закрывающая скобка в классе символов рядом с индексом 13 | \? * <":> + [] / 'Мой код:

Pattern.compile("|\\?*<\":>+[]/'").matcher(name).matches()

1 Ответ

2 голосов
/ 17 апреля 2020

Вы можете использовать

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...