26

I am sure its something pretty small that I am missing but I haven't been able to figure it out.

I have a JavaScript variable with the regex pattern in it but I cant seem to be able to make it work with the RegEx class

the following always evaluates to false:

var value = "someone@something.com";
var pattern = "^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$"
var re = new RegExp(pattern);
re.test(value);

but if I change it into a proper regex expression (by removing the quotes and adding the / at the start and end of the pattern), it starts working:

var value = "someone@something.com";
var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/
var re = new RegExp(pattern);
re.test(value);

since I always get the pattern as a string in a variable, I haven't been able to figure out what I am missing here.

alex
  • 479,566
  • 201
  • 878
  • 984
shake
  • 1,752
  • 4
  • 18
  • 22

1 Answers1

32

Backslashes are special characters in strings that need to be escaped with another backslash:

var value = "someone@something.com";
var pattern = "^\\w+@[a-zA-Z_]+?\\.[a-zA-Z]{2,3}$"
var re = new RegExp(pattern);
re.test(value);
RoToRa
  • 37,635
  • 12
  • 69
  • 105