2016-04-21 2 views
0

Как следует из названия, я хочу проверить и предотвратить любые специальные символы в строке. Однако при этом я предотвращаю подчеркивание (что хорошо держать). Есть ли способ разрешить подчеркивание?Java | Запретить любые специальные символы EXCEPT подчеркивание

Это, как я обрабатывать чек:

 Pattern pattern = Pattern.compile("[^a-zA-Z0-9&]", Pattern.CASE_INSENSITIVE); 
       Matcher m = pattern.matcher(String.join("", args)); 
       if (m.find()) { 
       //Code 
       } 
+3

Не можете ли вы просто добавить '_' после' & '? Протестировано и работает в [Regex101] (https://regex101.com/). –

+0

Вы, кажется, разрешаете и. – Thilo

ответ

1

Ваше выражение регулярное выражение в настоящее время позволяет любые символы, цифры и амперсанд (&). Просто добавьте знак подчеркивания к отрицаемому набору:

Pattern pattern = Pattern.compile("[^_a-zA-Z0-9&]", Pattern.CASE_INSENSITIVE); 
+0

Какой смысл делать этот CASE_INSENSITIVE (что дорого)? Кажется, что шаблон уже охватывает все прописные и строчные буквы. – Thilo

+0

Это правда; Я просто делал минимальную модификацию для данного примера. 'Pattern.CASE_INSENSITIVE' является избыточным. –