Why this returns false instead of true.
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('[email protected]'));
}
doit("/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/");
http://jsfiddle.net/hAV8Q/
Either format your expression properly:
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('[email protected]'));
}
doit("^\\w+([-+.\\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
// no / here, escape \
or pass the expression directly:
function doit(expression) {
alert(expression.test('[email protected]'));
}
doit(/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/g);
The slashes (/
) are not part of the expression, they denote a regex literal. If you use a string containing the expression, you have to omit them and escape every backslash since the backslash is the escape character in strings as well.
Because when creating a regex with new RegExp()
, you don't use the delimiters. Remove the /
from before and after the string.
Alternatively, pass the regex itself by removing the quotes before and after, and leave out the new RegExp()
call.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With