Javascript Regex作为字符串不工作

Javascript Regex as a string not working

本文关键字:工作 字符串 Regex Javascript      更新时间:2023-09-26

我试图理解为什么写regex作为字符串不工作,但使用它没有字符串的工作

这是我的例子:

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

您的RegExp语法错误。

  1. 当您使用RegExp构造器创建新的正则表达式时,不需要分隔符。
  2. 标志应该作为第二个参数传递给RegExp构造函数。
  3. .应该转义,如果你想匹配.文字。
使用

var patt = new RegExp("test_.*", "gi");

var patt = new RegExp("test_.*", "gi");
var res = patt.test("test_4");
document.write(res);

regexp构造函数不需要分隔符,而且,标志在另一个参数中被隔离,从而简化为

var patt = new RegExp('test_.*', 'gi');
var res = patt.test("test_4");
console.log(res);

在使用构造函数时,不需要在正则表达式的开始和结束处包含/,并且标志需要在第二个参数中。关于RegExp,请参见MDN文档。

var patt = new RegExp( "test_.*", "gi" );
var res = patt.test("test_4");
console.log(res);

您没有正确调用构造函数,应该将错误作为第二个参数传递:

new RegExp('test_.*', 'gi');

Documentation中可以看到,它应该尊重这种格式:

new RegExp(pattern[, flags])

这是你的演示:

var patt = new RegExp("test_.*", 'gi');
var res = patt.test("test_4");
alert(res);