如何连接两个 javascript 变量和正则表达式

How to concat two javascript variables and regex expression

我希望能够在中间使用正则表达式连接两个变量。

例如

var t1 = "Test1"
var t2 = "Test2"
var re = new RegEx(t1 + "/.*/" + t2);

所以我想要的结果是一个匹配这个的表达式..

"Test1  this works   Test2"

如何获得能够匹配任何结尾带有 Test1 和 Test2 的文本的结果?

试试这个(我用 ):

> var t1 = "Test1"
> var t2 = "Test2"
> var re = new RegExp('^' + t1 + '.*' + t2 + '$')
> re
/^Test1.*Test2$/
> re.test("Test1  this works   Test2")
true

备注

  • .* 如评论中所述,这意味着 从 0 到 ~
  • 重复的任何字符
  • 调用 RegExp 构造函数时会自动添加 斜杠 ,但不能嵌套未受保护的 斜杠 分隔符
  • 为了确保 Test1 在开头,我将 ^ 锚点 放在 Test2 末尾,我添加了 $ 主播
  • regex 构造函数不是 ReGex 而是 RegExp (注意尾随 p

RegExp 构造函数负责为您添加正斜杠。

var t1 = "Test1";
var t2 = "Test2";
var re = new RegExp(t1 + ".*" + t2);

re.test("Test1 some_text Test2"); // true

您不需要正则表达式:

var t1 = 'Test1';
var t2 = 'Test2';
var test = function(s) { return s.startsWith(t1) && s.endsWith(t2); };

console.log(test('Test1  this works   Test2'));
console.log(test('Test1 this does not'));

注意两个变量的值不包含任何特殊的正则表达式字符,或者转换这些值以转义任何特殊的正则表达式字符。

当然,还要确保中间的正则表达式与您想要的相匹配:-)

如果您知道开头和结尾,您可以强制执行:

var re = new RegExp("^" + t1 + ".*" + t2 + "$");