В моем приложении MVC3 на одном из объектов я сохраняю Дата рождения в виде строки. Зачем ? потому что мое приложение позволяет хранить дату рождения людей, давно умерших, например. Сократ, Платон, Эпикур ... и т. Д., И насколько я знаю, класс DateTime этого не позволяет.RegEx String Validator
Теперь, очевидно, что мы точно не знаем точную дату рождения Epicurus, мы просто знаем год рождения [341 BCE], поэтому то, что я собираюсь сделать, - это создание специального валидатора, который будет проверять строка ввода для даты рождения и убедитесь, что все они соответствуют следующему формату:
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 будет просто соответствовать или нет .. правильно?
UPDATE TWO:
Regular Expression M42, кажется, работает лучше. Я только что скопировал его и использовал его в своем пользовательском валидаторе (код в ссылке PasteBin ниже).
Thank you.
Почему '(BCE | \ d {4})? '? '(BCE)?' Должно быть достаточным, так как 'BCE' является последним (годы в примерах OP являются' 1809', '1809',' 341', '341',' 341' и '5' соответственно с последними тремя будучи BCE.) – jensgram
Вы правы - исправлено это, спасибо. – luastoned
Это соответствует: '" "' - строка, содержащая одно пространство. Выражение также должно содержать якобы '^' и '$'. – ridgerunner