В моем приложении MVC3 на одном из объектов я сохраняю Дата рождения в виде строки .Зачем ?потому что мое приложение позволяет хранить дату рождения давно умерших людей, например.Сократ, Платон, Эпикур ... и т. Д., Насколько я знаю, класс DateTime не позволяет этого.
Теперь, очевидно, мы не знаем точную дату рождения Эпикура, например, мы просто знаемгод рождения [341 г. до н.э.], поэтому я собираюсь создать специальный валидатор, который проверит входную строку для даты рождения и убедится, что все они соответствуют следующему формату:
12 Feb 1809
Feb 1809
341
341 BCE
Oct 341 BCE
11 Mar 5 BCE
Я был бы очень признателен, если бы кто-нибудь мог помочь мне с регулярным выражением, которое будет соответствовать любому из вышеперечисленного, и, конечно, не совпадать ни с чем другим.
Я пытался часами, и не получалгде угодно: s
ОБНОВЛЕНИЕ В ОТВЕТЕ НА ПРЕДОСТАВЛЕННЫЕ ОТВЕТЫ:
Большое спасибо, ребята, я бы хотел, чтобы вы были так же хороши, как и вы, в создании RegExes!Поскольку мое приложение с ASP.net MVC3, я хотел бы придерживаться класса .NET RegEx (для удобства).
luastoned ответ, кажется, работает !!Кажется, я не могу нарушить его логику со всеми тестовыми данными, которые я ему предоставил.
Хотя я могу также разрешить BC?потому что некоторые люди используют BC, а другие - BCE <это было бы возможно?И .. я прав, что регулярное выражение не может заменить BC до BCE?Я должен сделать это вручную через мой код C # правильно?RegEx будет просто соответствовать или нет .. правильно? </p>
ОБНОВЛЕНИЕ ВТОРОЕ:
Регулярное выражение M42, кажется, работает лучше.Я только что скопировал его и использовал в своем пользовательском валидаторе (код ссылки PasteBin ниже).
Спасибо.