title: Angular reactive forms pattern validator adding $ to regex and breaking validation
body: <p>I'm trying to validate a password with the following regex:<br>
  <code>^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.{8,})</code>.<br>
  Note that there is no terminating <code>$</code> char, because that would prevent valid passwords from being accepted. (I'm not sure why the input field doesn't terminate the string).<br>
  However, Angular's <code>Validators.pattern</code> adds the end of string char. And therefore my valid passwords fail.<br>
  How do I prevent the pattern validator from adding the <code>$</code>?<br>
  I suppose I could roll my own password validator, but surely there is a better solution...?  </p>
  
  <p>EDIT:
  Passwords that should succeed:</p>
  
  <ul>
  <li>Test1234</li>
  <li>tEst1234</li>
  <li>tesT1234</li>
  <li>1234Test</li>
  <li>1234tesT</li>
  <li>t#St1234</li>
  </ul>
  
  <p>Passwords that should fail:</p>
  
  <ul>
  <li>TEST1234</li>
  <li>test1234</li>
  <li>tEst123</li>
  <li>Test123</li>
  <li>testtest</li>
  <li>12345678</li>
  </ul>
  
  <p>Validator declaration:  </p>
  
  <pre><code>this.password = new FormControl('', [Validators.required, Validators.pattern('^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.{8,})')]);
  this.userForm.addControl('Password', this.password);
  </code></pre>