Автор Тема: Как определить, является ли введеная строка датой  (Прочитано 7446 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн chakra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 24
  • +0/-0
  • 0
    • Просмотр профиля
    • http://bluebirds.ema.lv/
[OFF]Прочитала все мануалы, пресмотрела кучу сайтов с примерами, ну не дружу я с РВ. А надо :( [/OFF]

В поле вводится 10 символов. Надо проверить, дата ли это. Максимум, что я поняла, так это то, что проверить формат, надо написать такое правило:

(\\d\\d).(\\d\\d).(\\d{4})  это на DD.MM.YYYY

Но как проверить, чтобы DD было не больше 31, а ММ не больше 12 не могу придумать :(

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
во-первых, этот шаблон пропустит дату вида 01ё10ы2005
во-вторых, гораздо проще не париться с регуляркой, а использовать [p]checkdate[/p], если язык - пхп. Впрочем, в перле тнавернякак есть что-то подобное
в-третьих, если так уж хочется регуляркой, то надо использовать оператор ИЛИ
типа (1[0-2]|0[1-9])

Оффлайн chakra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 24
  • +0/-0
  • 0
    • Просмотр профиля
    • http://bluebirds.ema.lv/
1. упс...
2. я бы рада, но это ЯваСкрипт, увы, надо перехватить значение из поля ввода. Если после субмита поле просто сбрасывается, тестировщикам это не нравится. Надо выдать сообщение и поругать.
3. спасибо! кажется, поняла как это строить!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Цитировать
chakra:
Если после субмита поле просто сбрасывается, тестировщикам это не нравится. Надо выдать сообщение и поругать.

Не понял, а это здесь при чём?
Когда поле сбрасывается, это не только тестировщикам не нравится. мне, например, тоже. Но кто мешает после сабмита и вывести и поругать?

Оффлайн chakra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 24
  • +0/-0
  • 0
    • Просмотр профиля
    • http://bluebirds.ema.lv/
Цитировать
RomikChef:
 Но кто мешает после сабмита и вывести и поругать?

После сабмита ява сбрасывает это поле и не дает проверить правильность его заполнения. Но оно также может быть пустым - поле не обязательное - посему понять, это сброшенная ошибка или же просто пустое поле нельзя со стороны основоного скрипта. Поэтому приходится перехватывать на onChange()

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Не понял, при чём здесь ява? Что значит - сбрасывает? Лезет в это поле, и стирает то, что в нём было, что ли?

Почему клиентским скриптом понять можно, а серверным - неьлзя? Не вижу логики.

Оффлайн chakra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 24
  • +0/-0
  • 0
    • Просмотр профиля
    • http://bluebirds.ema.lv/
Потому что весь интерфейс написан на яве с помощью АйБиэМовского программпродукта Rational Rapid Developer.

Почему сбрасывает, не знаю. Но когда вызывается метод по кнопке Субмит для обработки формы, в поле даты, если она введена не правильно, пусто.

Оффлайн chakra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 24
  • +0/-0
  • 0
    • Просмотр профиля
    • http://bluebirds.ema.lv/
Вот, в результате получилось это:

var reg=/(0[1-9]|1[0-9]|2[0-9]|3[0-1])[.](1[0-2]|0[1-9])[.](19[0-9][0-9]|20[0-9][0-9])/

RomikChef, спасибо за хорошую основу для роста!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Цитировать
chakra:
когда вызывается метод по кнопке Субмит для обработки формы, в поле даты, если она введена не правильно, пусто.

Вообще-то, эта проблема - возврат пустых значений, не имеет отношения к проверке даты.
А если какая-то другая проверка на сервере не пройдёт? Дата всё равно окажется пустой? может быть, делать всё-таки, по-человечески?

Оффлайн chakra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 24
  • +0/-0
  • 0
    • Просмотр профиля
    • http://bluebirds.ema.lv/
Цитировать
может быть, делать всё-таки, по-человечески?

по-человечески нельзя, увы. Ибо политика фирмы - использовать вышеупомянутый программный продукт. А этот продукт и отсекает сам дату, если она не правильно введена, и он нам подает уже пустое поле. Посему программистам приходится писать все неизвестно как :(

SSH

  • Гость
Цитировать
chakra:
Ибо политика фирмы - использовать вышеупомянутый программный продукт

Очень интересно. А вы не можете сказать, что за систему вы разрабатываете на Rapid Developer? Я бы тогда ссылочку для всеобщего обозрения поставил на http://shmakov.ru/
Ну а если не хотите, чтобы все знали, тогда мне хоть по секрету скажите :) на sergey /собачка/ shmakov.ru

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Вы лучше скажите, почему ваша система не заполняет Value при ошибке?

Оффлайн SSH

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
    • http://shmakov.ru
Цитировать
RomikChef:
Вы лучше скажите, почему ваша система не заполняет Value при ошибке?


Предположу, что этот RD проверяет полученную форму сначала сам в runtime библиотеке соответствие введенного значения типу переменной, и только потом вызывает Validate, который написал программист. А когда пользователю показывается форма на экране, то RD заполняет ее сохраненными в переменных значениями. Тут и оказывается, что неправильная дата не сохранилась, т.е. и показать ему нечего.

Оффлайн chakra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 24
  • +0/-0
  • 0
    • Просмотр профиля
    • http://bluebirds.ema.lv/
SSH, могу сказать. Это банковская система исключительно для внутреннего пользования. Так что показать ее нет ни малейшей возможности.


Цитировать
SSH:
Тут и оказывается, что неправильная дата не сохранилась, т.е. и показать ему нечего.

именно так.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28