我希望能够在中间用正则表达式连接两个变量。
e.g。
var t1 = "Test1"
var t2 = "Test2"
var re = new RegEx(t1 + "/.*/" + t2);
所以我想要的结果是一个与此匹配的表达式。
"Test1 this works Test2"
我如何得到一个结果,我能够匹配任何包含Test1和Test2的文本?
答案 0 :(得分:3)
试试这个(我使用nodejs):
> 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)
您不需要正则表达式:
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;
答案 3 :(得分:1)
如果你知道开头和结尾,你可以强制执行:
var re = new RegExp("^" + t1 + ".*" + t2 + "$");
答案 4 :(得分:0)
请注意两个变量的值不包含任何特殊的正则表达式字符,或者转换这些值以转义任何特殊的正则表达式字符。
当然,还要确保两者之间的正则表达式符合您的要求: - )