- The first Regular Expression Library on the Web!

Please support RegExLib Sponsors


Regular Expression Details

Title Test Find Pattern Title
# Greedy, no-backtracking and only named groups capture. (?n) ^ ( (?'allowDay'Sun|Mon|Fri) | (Sat # if we match 'ur' then constrain # the next char with a lookahead # for 'd' so that we don't match on # Satur. (?'allowDay'ur(?=d))? ) | ( ( ( T ( # Accepts "Tu.", "Tue." ue? | # Accepts "Th.", "Thu." or "Thur." h(ur?)? ) ) | ( Wed # if "ne" matched then constrain # the next chars with a lookahead # for 'sd' so that we don't match on # Wedne. (ne(?=sd))? ) ) ( # If 'Tue' or 'Thur' or 'Wedne' matched # then match 's' in the "allowDay" Group. (?<=(e|r)) (?'allowDay's) )? ) ) # Optional ending match of "day" or "." ( # if Group[allowDay] succeeded then allow # the letters "day" or a full-stop. If it # did not succeed, a full-stop is required. (?(allowDay)day)|\. )? $
Th | Thu | Thurs
Thursd | T | Thursdays
Author Rating: The rating for this expression. Darren Neimke
Source Michael Ash
Your Rating
Bad Good

Enter New Comment

Spammers suck - we apologize. Please enter the text shown below to enable your comment (not case sensitive - try as many times as you need to if the first ones are too hard):

Existing User Comments

Title: Should've mentioned...
Name: Darren Neimke
Date: 3/16/2004 4:08:50 AM
Before I expanded the pattern it looked like this: (?n)^((?'p1'(Sun|Mon|Fri))|(Sat(?'p1'ur(?=d))?)|(((T(ue?|h(ur?)?))|(Wed(ne(?=sd))?))((?<=(e|r))(?'p1's))?))((?(1)day)|\.)?$

Title: Altered to support PatternWhitespace
Name: Darren Neimke
Date: 3/16/2004 4:03:23 AM
Updated this pattern to support PatternWhitespace. I'd love to get feedback from anybody drifting by as to whether this level of commenting is too verbose.

Title: To save myself some future work
Name: Darren Neimke
Date: 9/15/2003 11:59:55 PM
...I'll expand the regex out: (?n) ^ ( (?'p1' (Sun|Mon|Fri) ) | (Sat (?'p1'ur(?=d))? ) | ( ( ( T ( ue? | h(ur?)? ) ) | ( Wed(ne(?=sd))? ) ) ( (?<=(e|r)) (?'p1's) )? ) ) ( (?(1)day)|\. ) ?$

Title: Oooh... that's pretty sneaky
Name: Darren Neimke
Date: 9/15/2003 11:56:42 PM
Took me a while to work out what you were doing on Wednesday :-)

Title: Re: Very True
Name: Michael Ash
Date: 9/15/2003 2:17:30 PM
Sweet mod. You had (Sun) in the first group twice and it still lets a couple of bad values slip through (Wednes and Satur)but more importantly I learned a couple of new tricks with groupings from your version. I tried rewriting it myself using some of the things I picked up from your's and finally came up with this (?n)^((?'p1'(Sun|Mon|Fri))|(Sat(?'p1'ur(?=d))?)|(((T(ue?|h(ur?)?))|(Wed(ne(?=sd))?))((?<=(e|r))(?'p1's))?))((?(1)day)|\.)?$ Although a couple of the grouping seem to be specific to to .net RE's. specifically the named and look-behind groups I tried it with a couple of other RE checkers and it wouldn't take the expression at all. Again thanks for showing me something new.

Title: Very true
Name: Darren Neimke
Date: 9/12/2003 6:00:51 PM
Thanks for the catch Michael! In a vain attempt to prove that mine *could* still work {grin} I'll alter my pattern to this: (?ni)\b(?=[smtwf])(?'fb'Sun|Mon|Fri|Sun)|(Tu(e(?'fb's)?)?|Wed(?'fb'nes)?|Th(u(r(?'fb's)?)?)?|Sat(?'fb'ur)?)(?(1)(day|\.)?)\b This uses conditional matching to check that the first, essential components are matched before matching on (day|\.). Would I use mine or yours? Probably yours :-)

Title: Allow bad matches for days
Name: Michael Ash
Date: 9/12/2003 9:46:04 AM
Will catch good days but also have some bad matches. When I noticed how much shorter your RE was than mine I wondered how you avoided some of the bad matches I struggled to avoid with trying to reduce the RE's size. I try something similar to what you've done, but you've got the same problems I faced matching full names and abbreviations. Bad matches : Wedday, Wednes, Thuday, Tuday

Copyright © 2001-2021, | ASP.NET Tutorials