title: Regular expression for validating names and surnames?
body: <p>Although this seems like a trivial question, I am quite sure it is not :)</p>
  
  <p>I need to validate names and surnames of people from all over the world. Imagine a huge list of miilions of names and surnames where I need to remove as well as possible any cruft I identify. How can I do that with a regular expression? If it were only English ones I think that this would cut it:</p>
  
  <pre><code>^[a-z -']+$
  </code></pre>
  
  <p>However, I need to support also these cases:</p>
  
  <ul>
  <li>other punctuation symbols as they might be used in different countries (no idea which, but maybe you do!)</li>
  <li>different Unicode letter sets (accented letter, greek, japanese, chinese, and so on)</li>
  <li>no numbers or symbols or unnecessary punctuation or runes, etc..</li>
  <li>titles, middle initials, suffixes are not part of this data</li>
  <li>names are already separated by surnames.</li>
  <li>we are prepared to force ultra rare names to be simplified (there's a person named '@' in existence, but it doesn't make sense to allow that character everywhere. Use pragmatism and good sense.)</li>
  <li>note that many countries have laws about names so there are standards to follow</li>
  </ul>
  
  <p>Is there a standard way of validating these fields I can implement to make sure that our website users have a great experience and can actually <em>use their name</em> when registering in the list?</p>
  
  <p>I would be looking for something similar to the many "email address" regexes that you can find on google.</p>