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

时间:2016-10-06 21:16:32

标签: javascript regex concat

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

e.g。

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

所以我想要的结果是一个与此匹配的表达式。

"Test1  this works   Test2"

我如何得到一个结果,我能够匹配任何包含Test1和Test2的文本?

5 个答案:

答案 0 :(得分:3)

试试这个(我使用):

> 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,我添加了$ < EM>锚
  • 正则表达式构造函数不是ReGex而是RegExp(请注意尾随p

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

您不需要正则表达式:

&#13;
&#13;
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'));
&#13;
&#13;
&#13;

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

当然,还要确保两者之间的正则表达式符合您的要求: - )