为什么这个返回 false 而不是 true。
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('mename@memail.com'));
}
doit("/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/");
为什么这个返回 false 而不是 true。
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('mename@memail.com'));
}
doit("/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/");
要么正确地格式化您的表达式:
function doit(expression) {
var regex = new RegExp(expression, 'g');
alert(regex.test('mename@memail.com'));
}
doit("^\\w+([-+.\\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");
// no / here, escape \
或直接传递表达式:
function doit(expression) {
alert(expression.test('mename@memail.com'));
}
doit(/^\w+([-+.\']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/g);
斜杠(/
)不是表达式的一部分,它们表示一个正则表达式字面量。如果你使用包含表达式的字符串,则必须省略它们并转义每个反斜杠,因为反斜杠在字符串中也是转义字符。
\\w
而非 \w
。如果您只是像这个答案中的第二个选项一样提供一个实际的 RegExp 对象而不是一个字符串,那么您的代码将会更加简洁。 - apsillersnew RegExp()
创建正则表达式时,不需要使用分隔符。请从字符串前后移除/
。new RegExp()
调用,直接传递正则表达式本身。
new RegExp
不希望被斜杠括起来的字符串;第一个和最后一个字符是文字正则表达式模式的一部分。 - apsillers