title: Conditional and non-conditional in one Fluent Validation rule
body: <p>I need to validate zip code, 
  - it always must have a value (non-conditional)</p>
  
  <pre><code>// General Rule:
  RuleFor( m =&gt; m.Zip ).NotEmpty()
      .WithMessage( "Zip code is required." );
  </code></pre>
  
  <p>If it's in the US, value should match regex (conditional)</p>
  
  <pre><code>// United States Rule:
  RuleFor( m =&gt; m.Zip )
      .Matches( ZipCodeRegEx )
      .WithMessage( "Invalid Zip Code" )
      .When( m =&gt; IsUnitedStates( m.CountryCode ) );
  </code></pre>
  
  <p>My goal is to combine General Rule and United States Rule in one Rule
  , I have tried:</p>
  
  <pre><code>// doesn't check general rule for non-us
  RuleFor( m =&gt; m.Zip )
      .NotEmpty()
          .WithMessage( "Zip code is required." )
      .Matches( ZipCodeRegEx )
          .When( m =&gt; IsUnitedStates( m.CountryCode ) )
          .WithMessage( "Invalid Zip Code" );
  
  // doesn't check general rule for non-us
  RuleFor( m =&gt; m.Zip )
      .NotEmpty()
          .When( m =&gt; true )// always
          .WithMessage( "Zip code is required." )
      .Matches( ZipCodeRegEx )
          .When( m =&gt; IsUnitedStates( m.CountryCode ) )
          .WithMessage( "Invalid Zip Code" );
  </code></pre>
  
  <p>How I can write this in one rule?</p>