13

Just trying to use javascript's regex capabilities with the .test() function.

  var nameRegex = '/^[a-zA-Z0-9_]{6,20}$/';

  if(nameRegex.test($('#username').val())) {
      ...
  }

The error is on this line if(nameRegex.test($('#username').val())) {

Debugger breaks there and says "Uncaught TypeError: undefined is not a function". It seems like .test() is not defined? Shouldn't it be?

2 Answers 2

41

As it currently stands, nameRegex isn't a regex but a string and String doesn't have test functon which is why you are getting that error.

Remove the quotes around your regex. That is the literal form of regex.

var nameRegex = /^[a-zA-Z0-9_]{6,20}$/; //remove the quotes
Sign up to request clarification or add additional context in comments.

1 Comment

@Andrew, glad to have helped :)
10

Also, you can create the RegExp from a string by the inherent constructor within javascript.

var nameRegex = '^[a-zA-Z0-9_]{6,20}$';
var regex = new RegExp(nameRegex);
...

if(regex.test(stringToTest)) {
    ...
}

...

MDN Docs :: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp

NOTE: don't provide the initial '/' slashes in the string when creating the regex object... It will add them.

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.