Я не уверен, как это сделать с помощью регулярного выражение (или, если можно, я новичок в регулярном выражении). У меня есть значение угла, которое вводит пользователь, и я пытаюсь проверить его. Он находится в форме градусов-минут-секунд. Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь ошибочно использует секундную часть, я должен поймать эту ошибку, но мой матч за градусы-минуты - это успех.Шаблон совпадения [0-9] - [0-9] - [0-9], но без соответствия [0-9] - [0-9]
Возможно, этот метод будет лучше объяснить:
private Boolean isTextValid(String _angleValue) {
Regex _degreeMatchPattern = new Regex("0*[1-9]");
Regex degreeMinMatchPattern = new Regex("(0*[0-9]-{1}0*[0-9]){1}");
Regex degreeMinSecMatchPattern = new Regex("0*[0-9]-{1}0*[0-9]-{1}0*[0-9]");
Match _degreeMatch, _degreeMinMatch, _degreeMinSecMatch;
_degreeMinSecMatch = degreeMinSecMatchPattern.Match(_angleValue);
if (_degreeMinSecMatch.Success)
return true;
_degreeMinMatch = degreeMinMatchPattern.Match(_angleValue);
if (_degreeMinMatch.Success)
return true;
_degreeMatch = _degreeMatchPattern.Match(_angleValue);
if (_degreeMatch.Success)
return true;
return false;
}
}
Я хочу, чтобы проверить градусы-минуты, если матч градусы-минуты-секунды не удается, но только если пользователь не вводить какие-либо данные секунд. Могу ли я сделать это с помощью регулярного выражения, или мне нужно проанализировать строку и оценить каждую часть отдельно? Благодарю.
EDIT: Пример данных будет 45-23-10 в качестве правильных данных. Проблема 45-23 также является достоверными данными; понимается 0 секунд. Поэтому, если пользователь набирает 45-23-1 = при аварии, регулярное выражение степениMinMatchPattern в моем коде будет успешно соответствовать, даже если оно недействительно.
Второй РЕДАКТ: просто для того, чтобы это стало ясно, минуты и вторая части являются необязательными. Пользователь может ввести 45, и это действительно.
у вас есть какие-то данные? –
Это было 45-23-1 =. Я думаю, вы просто не видели знак равенства. Возможно, лучшим примером является 45-23-1A. Извините за путаницу. – Shawn