echo 2006-10-10 | grep -c '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$'

quick and easy way of validating a date format of yyyy-mm-dd and returning a boolean

Quick and easy way of validating a date format of yyyy-mm-dd and returning a boolean, the regex can easily be upgraded to handle "in betweens" for mm dd or to validate other types of strings, ex. ip address. Boolean output could easily be piped into a condition for a more complete one-liner.

-1
By: rez0r
2009-05-11 22:18:43

1 Alternatives + Submit Alt

  • On CentOS at least, date returns a boolean for the common date string formats, including YYYY-MM-DD. In the sample output, you can see various invalid dates returning 0 whereas a simple regex check would return 1 for the invalid dates. -d, --date=STRING display time described by STRING, not `now' The version of date on OS X does not appear to have this same option. Show Sample Output


    0
    if date -d 2006-10-10 >> /dev/null 2>&1; then echo 1; else echo 0; fi
    SteveGoossens · 2013-01-10 10:35:15 0

What Others Think

You can reduse repetitious typing using 1 of the following commands and achieve the same result :). echo 2006-10-10 |egrep -c '^[0-9]{4}-[0-9]\{2\}-[0-9]\{2\}' OR echo 2006-10-10 |egrep -c '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
scifisamurai · 470 weeks and 6 days ago
Aghh, correction - the 1st line should have been: echo 2006-10-10 |grep -c '^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}' I wish commandlinefu had a delete option for one's own posts/comments to clean up one's own typos.
scifisamurai · 470 weeks and 6 days ago
nice:)
rez0r · 470 weeks and 4 days ago

What do you think?

Any thoughts on this command? Does it work on your machine? Can you do the same thing with only 14 characters?

You must be signed in to comment.

What's this?

commandlinefu.com is the place to record those command-line gems that you return to again and again. That way others can gain from your CLI wisdom and you from theirs too. All commands can be commented on, discussed and voted up or down.

Share Your Commands



Stay in the loop…

Follow the Tweets.

Every new command is wrapped in a tweet and posted to Twitter. Following the stream is a great way of staying abreast of the latest commands. For the more discerning, there are Twitter accounts for commands that get a minimum of 3 and 10 votes - that way only the great commands get tweeted.

» http://twitter.com/commandlinefu
» http://twitter.com/commandlinefu3
» http://twitter.com/commandlinefu10

Subscribe to the feeds.

Use your favourite RSS aggregator to stay in touch with the latest commands. There are feeds mirroring the 3 Twitter streams as well as for virtually every other subset (users, tags, functions,…):

Subscribe to the feed for: