Похоже, что ваше регулярное выражение представляет фрагмент значения недопустимого , и вы, вероятно, используете Matcher.find()
, чтобы определить, соответствует ли любая часть вашего значения этому регулярному выражению. Это верно? Если это так, вы можете изменить свой шаблон на:
Pattern p = Pattern.compile("[^a-zA-Z'-]|-.*-|^-|-$");
, который будет соответствовать символу без буквы, без дефиса и без апострофа, или последовательность символов, которые начинаются и заканчиваются дефисами (таким образом обнаруживая значение, содержащее два дефиса), или ведущий дефис, или конечный дефис.