Регулярное выражение включает и исключает специальные символы
Я нахожу регулярное выражение, которое придерживается ниже правил.
Разрешенные символы
Алфавит: a-z/A-Z
Числа: 0-9
Специальные символы: ~ @# $^ и *() - _ + = [] {} | \,.?:
(пробелы должны быть разрешены)
Не разрешено
Специальные символы: < > '"/;`%
Ответы
Ответ 1
Для разрешенных символов вы можете использовать
^[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$
чтобы проверить полную строку, которая должна состоять только из допустимых символов. Обратите внимание, что -
находится в конце (потому что иначе это будет диапазон), и несколько символов будут экранированы.
Для недопустимых символов вы можете использовать
[<>'"/;`%]
чтобы проверить их.
Чтобы объединить оба в одном регулярном выражении, вы можете использовать
^(?=[[email protected]#$^*()_+=[\]{}|\\,.?: -]*$)(?!.*[<>'"/;`%])
но вам понадобится механизм регулярных выражений, который позволяет искать.
Ответ 2
Вы на самом деле не задали вопрос, но если у вас его есть, это может быть ваш ответ...
Предполагая, что все символы, кроме "Специальные символы", разрешены, вы можете написать
String regex = "^[^<>'\"/;`%]*$";
Ответ 3
[[email protected]#\^\$&\*\(\)-_\+=\[\]\{\}\|\\,\.\?\s]*
Это выполнит сопоставление, если вы хотите разрешить просто переносить его в ^ $или любые другие разделители, которые вы считаете нужными, если вы это делаете, не требуется никакой конкретной логики запрета.