How can I tell if a string has any non-ASCII characters in it?

ascii, javascript, regex, unicode

Solution

Try with this regex. It tests for all ascii characters that have some meaning in a string, from space `32` to tilde `126`:

var ascii = /^[ -~]+$/;

if ( !ascii.test( str ) ) {
  // string has non-ascii characters
}

Edit: with tabs and newlines:

/^[ -~\t\n\r]+$/;

Problem

I'm looking to detect internationalized domain names and local portions in email addresses, and would like to know if there is a quick and easy way to do this with regex or otherwise in Javascript.

Original source