title: Validating FirstName in a web application
body: <p>I do not want to be too strict as there may be thousands of possible characters in a possible first name</p>
  
  <p>Normal english alphabets, accented letters, non english letters, numbers(??), common punctuation synbols</p>
  
  <p>e.g. </p>
  
  <pre><code>D'souza
  D'Anza
  M.D. Shah (dots and space)
  Al-Rashid
  Jatin "Tom" Shah
  </code></pre>
  
  <p>However, I do not want to except HTML tags, semicolons etc</p>
  
  <p>Is there a list of such characters which is absolutely bad from a web application perspective</p>
  
  <p>I can then use RegEx to blacklist these characters</p>
  
  <p><strong>Background on my application</strong></p>
  
  <p>It is a Java Servlet-JSP based web app.
  Tomcat on Linux with MySQL (and sometimes MongoDB) as a backend</p>
  
  <p><strong>What I have tried so far</strong></p>
  
  <pre><code>String regex = "[^&lt;&gt;~@#$%;]*";
  if(!fname.matches(regex))
      throw new InputValidationException("Invalid FirstName")
  </code></pre>
  
  <p>My question is more on the design than coding ... I am looking for a exhaustive (well to a good degree of exhaustiveness) list of characters that I should blacklist</p>