Проверка Regex HHmm - Java - PullRequest
       21

Проверка Regex HHmm - Java

1 голос
/ 11 февраля 2012

Мне нужно проверить запись textBox, которая содержит время.

Время должно быть в формате ЧЧ: мм и в 24-часовом формате.

Например:

09:00, 21:00, 00:00, etc.,

Неправильные записи:

2534, 090, *7&**, etc.,

Если введенное время в формате ЧЧмм, то мне нужно добавить «:» к записи.

Например,

If textBox entry= 0930, it should be changed to 09:30

Это то, что у меня пока есть:

String textBoxVal = getTextBoxValue();
String colonCheck = ":";

if (!textBoxVal.contains(colonCheck)){
textBoxVal = textBoxVal.substring(0,2) + ":" + textBoxVal.substring(2,4);
}

Но, как очевидно, этот код не будет работать для всех случаев.

Я не очень знакомс regex, поэтому любая помощь в том, как этого можно достичь с помощью regex в Java, будет полезна! Спасибо!

Ответы [ 3 ]

6 голосов
/ 11 февраля 2012

Решение с использованием DateFormat, как указано Ранхиру

    String theTime = "23:55";

    SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm"); //HH = 24h format
    dateFormat.setLenient(false); //this will not enable 25:67 for example
    try {
        System.out.println(dateFormat.parse(theTime));
    } catch (ParseException e) {
        throw new RuntimeException("Invalid time "+theTime, e);
    }
3 голосов
/ 11 февраля 2012

Следующие действия помогут вам

str = str.replaceAll("([01][0-9]|[2][0-3]):?([0-5]\d)", "$1:$2");

Это изменится с 2300 до 23:00 и оставит 23:00 как есть.

Вы также можете использовать (?:[01][0-9]|[2][0-3]):?[0-5]\d простодля проверки.

Просто еще одно замечание - даже если это поможет, если вам нужна проверка даты, то я бы пошел по маршруту DateFormat.

0 голосов
/ 11 февраля 2012
//Assuming text to match is in var mytext
var re=new RegExp(/^(\d\d):{0,1}(\d\d)$/);
var match=re.exec(mytext);
if (!match) alert("Bad value!");
else mytext=match[1]+':'+match[2];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...