我试图理解为什么将正则表达式作为字符串写入不起作用但使用不带字符串的方法确实有效。
这是我的例子:
var patt = new RegExp("/test_.*/gi");
var res = patt.test("test_4");
console.log(res);
将返回false
但是这个:
var patt = /test_.*/gi;
var res = patt.test("test_4");
console.log(res);
将返回true
有什么区别
答案 0 :(得分:2)
RegExp
的语法错误。
RegExp
构造函数创建新的正则表达式时,不需要分隔符。RegExp
构造函数。.
字面值,则.
应该进行转义。<强>用法强>
var patt = new RegExp("test_.*", "gi");
<强>演示强>
var patt = new RegExp("test_.*", "gi");
var res = patt.test("test_4");
document.write(res);
答案 1 :(得分:1)
regexp构造函数不需要分隔符,而且,标志在另一个参数中被隔离,这简化了它
var patt = new RegExp('test_.*', 'gi');
var res = patt.test("test_4");
console.log(res);
答案 2 :(得分:0)
使用构造函数时,您不需要在正则表达式的开头和结尾包含/
,并且标志需要位于第二个参数中。请参阅MDN Documentation for RegExp.
var patt = new RegExp( "test_.*", "gi" );
var res = patt.test("test_4");
console.log(res);
答案 3 :(得分:0)
你没有正确地调用构造函数,应该将falgs作为第二个参数传递:
new RegExp('test_.*', 'gi');
正如您在 Documentation 中看到的那样,它应该遵循以下格式:
new RegExp(pattern[, flags])
这是你的演示:
var patt = new RegExp("test_.*", 'gi');
var res = patt.test("test_4");
alert(res);
&#13;