1

What would be a good regex to use for validating a username, forbidding all special chars except the "@" symbol in case people want to use their email address as their username?

1
  • 3
    Just a reminder, you should also validate on the server-side, because a malicious user could bypass your Javascript validation. Commented Feb 15, 2011 at 1:02

2 Answers 2

2
^([a-zA-Z0-9.]+@){0,1}([a-zA-Z0-9.])+$

This will permit A-Z, a-z, 0-9 and ., and at most one @

Sign up to request clarification or add additional context in comments.

Comments

2

Well I guess this may work for your circumstances (see below)...

var userRegex = /^[\w\.@]{6,100}$/;

This will match...

  • word characters such as 0-9, A-Z, a-z, _
  • literal period
  • literal @
  • between 6 and 100 characters long

You should probably look at the Email RFC, which states, amongst other characters, that the following are legal: ! # $ % & ' * + - / = ? ^ _ `` { | } ~. This means that the regex above will not allow all emails.

So...

var validUsername = document.getElementById('username').value.match(userRegex);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.