Вопрос требует одного регулярного выражения и подразумевает, что это должно быть регулярное выражение, которое соответствует , что хорошо, и на него отвечают другие. Для интереса, однако, я отмечаю, что эти правила довольно просто сформулировать напрямую как регулярное выражение, которое должно не совпадать. I.e.:
x !~ /[^A-Za-z0-9_]|^_|_$|__|^\d+$/
- никаких других символов, кроме букв, цифр и _
- не может начинаться с _
- не может заканчиваться на _
- не может иметь два _ подряд
- не может быть всех цифр
Вы не можете использовать его таким образом в Rails validates_format_of, но вы можете поместить его в метод validate для класса, и я думаю, что у вас будет гораздо больше шансов понять, что вы имели в виду , месяц или год.