java regex pattern unclosed character class

Assuming that you want to match \ and - and not ]:

Pattern pattern = Pattern.compile("^[a-zA-Z\300-\3770-9\u0153\346 \u002F.'\\\\-]*$");

You need to double escape your backslashes, as \ is also an escape character in regex. Thus \\] escapes the backslash for java but not for regex. You need to add another java-escaped \ in order to regex-escape your second java-escaped \.

So \\\\ after java escaping becomes \\ which is then regex escaped to \.

Moving - to the end of the sequence means that it is used as a character, instead of a range operator as pointed out by Pshemo.

Leave a Comment