Я делаю валидатор ... Он получит строку и проверит ее. Я хочу сделать так, что если минус находится в начале числа, это будет считаться истиной. Как (-34 + 56) и (23 * -43) будет в порядке, но (23 + * 23-) будет не в порядке .. . На самом деле это для калькулятора, поэтому это должно быть правильное уравнение
Я попытался добавить строку, которая соответствовала бы - но это не работало и не было разумно.
Это мой метод проверки
public boolean validateInput(String input) {
if(input.contains(".")) {
return true;
}
Pattern pattern = Pattern.compile("[-]");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
return true;
}
if((input.replaceAll("[^(]","" ).length() != input.replaceAll("[^)]", "").length()) || input.split("[^\\d]").length == 0 || input.length() == 0)
return false;
// [\d|-][(|)] [\d|)][(|\d]|[^\d|(][)|^\d]
// [\d][(]|[)][\d]|[^\d][)]|[(][^\d]
// String ope = "*\\/+^-";
//to check input like 9(, )9, *),(*..
pattern = Pattern.compile("(\\d\\()|(\\)\\d)|(\\([*\\/+^])|([*\\/+^]\\))");
matcher = pattern.matcher(input);
if (matcher.find()) {
return false;
}
//
pattern = pattern.compile("[^\\d|+*^()\\/]");
matcher = pattern.matcher(input);
if (matcher.find()) {
return false;
}
//to check if 2 consecutive operators are there...
pattern = pattern.compile("[*-+^\\/]{2}");
matcher = pattern.matcher(input);
if (matcher.find()) {
return false;
}
return true;
}
только что выдал ошибку
Что должно быть регулярным выражением, чтобы это исправить.