title: Understanding the ramifications of CultureInvariant and IgnoreCase on [A-Za-z]
body: <p>If I create a <code>Regex</code> based on this pattern: <code>@"[A-Za-z]+"</code>, does the set that it matches change at all by adding <code>RegOptions.IgnoreCase</code> if I'm already using <code>RegOptions.CultureInvariant</code> (due to <a href="https://stackoverflow.com/search?q=turkish%20i">issues like this</a>)?  I think this is an obvious "no, it's just redundant and repetitive".  And in my tests that's what I've shown, but I wonder if I'm missing something due to confirmation bias.  </p>
  
  <p>Please correct me if I'm wrong on this point, but I believe that I definitely need to use the <code>CultureInvariant</code> though, since I also do not know what the culture will be.  <a href="https://msdn.microsoft.com/en-us/library/yd1hzczs.aspx#Invariant" rel="nofollow noreferrer">MSDN Reference</a></p>
  
  <p><strong>Note:</strong> this is not the actual pattern I need to use, just the simplest critical portion of it.  The full pattern is: <code>@"[A-Za-z0-9\s!\\#$(),.:;=@'\-{}|/&amp;]+"</code>, in case there is actually some strange behavior surrounding symbols, case, and culture.  No, I didn't create the pattern, I'm just consuming it, can't change it, and I realize the <code>|</code> is not needed before <code>/&amp;</code>.</p>
  
  <p>If I could change the pattern...</p>
  
  <ol>
  <li>Pattern <code>"[a-z]"</code> with both <code>CultureInvariant</code> and <code>IgnoreCase</code>
  would be functionally equivalent to <code>"[A-Za-z]"</code> using only
  <code>CultureInvariant</code> correct?</li>
  <li>Assuming #1 is correct, which would be more efficient, and why?  I would guess the shorter pattern is more efficient to evaluate against, but I don't know how the internals work right now to say that with much confidence.</li>
  </ol>