Путаница с использованием отрицательных классов персонажей?JAVA

Программисты JAVA общаются здесь
Anonymous
Путаница с использованием отрицательных классов персонажей?

Сообщение Anonymous »

У меня есть следующий метод: < /p>

Код: Выделить всё

protected BigDecimal stringToBigDecimal(String value) throws ParseException
{
if (Pattern.matches("[\\d,.]+", value))
{
Number n = NumberFormat.getInstance().parse(value);

return new BigDecimal(n.doubleValue());
}
else
{
throw new ParseException("Invalid String", -1);
}
}
< /code>

Это значение бросает исключение (как и ожидалось), поэтому эта Regexpr работает: < /p>

String wrongAmount = "1,U35,345.43";
< /code>

Но когда я попробую это: < /p>

protected BigDecimal stringToBigDecimal(String value) throws ParseException
{
if (Pattern.matches("[\\D&&[^.,]]+", value))
{
throw new ParseException("Invalid String", -1);
}

Number n = NumberFormat.getInstance().parse(value);

return new BigDecimal(n.doubleValue());
}
< /code>

Нет исключения, но почему?
Сначала я подумал, что существует логическая проблема с выражением «кроме», поэтому я попробовал это значение с помощью этого шаблона: < /p>

String wrongAmount = "1U3534543";

protected BigDecimal stringToBigDecimal(String value) throws ParseException
{
if (Pattern.matches("[\\D]+", value))
{
throw new ParseException("Invalid String", -1);
}

Number n = NumberFormat.getInstance().parse(value);

return new BigDecimal(n.doubleValue());
}
< /code>

... но это не соответствует? Что я понял неправильно на «незначном выражении» \\ d. 
. Значение содержит «u», так почему оно не соответствует?

Подробнее здесь: https://stackoverflow.com/questions/100 ... er-classes

Вернуться в «JAVA»