Регулярное выражение включает и исключает специальные символы

Я нахожу регулярное выражение, которое придерживается ниже правил.

Разрешенные символы

Алфавит: a-z/A-Z
Числа: 0-9
Специальные символы: ~ @# $^ и *() - _ + = [] {} | \,.?:
(пробелы должны быть разрешены)

Не разрешено

Специальные символы: < > '"/;`%

Ответ 1

Для разрешенных символов вы можете использовать

^[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$

чтобы проверить полную строку, которая должна состоять только из допустимых символов. Обратите внимание, что - находится в конце (потому что иначе это будет диапазон), и несколько символов будут экранированы.

Для недопустимых символов вы можете использовать

[<>'"/;`%]

чтобы проверить их.

Чтобы объединить оба в одном регулярном выражении, вы можете использовать

^(?=[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$)(?!.*[<>'"/;`%])

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

Ответ 2

Вы на самом деле не задали вопрос, но если у вас его есть, это может быть ваш ответ...

Предполагая, что все символы, кроме "Специальные символы", разрешены, вы можете написать

String regex = "^[^<>'\"/;`%]*$";

Ответ 3

[[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]*

Это выполнит сопоставление, если вы хотите разрешить просто переносить его в ^ $или любые другие разделители, которые вы считаете нужными, если вы это делаете, не требуется никакой конкретной логики запрета.