代码之家  ›  专栏  ›  技术社区  ›  rjg132234

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

  •  0
  • rjg132234  · 技术社区  · 8 年前

    我想用正则表达式在中间连接两个变量。

    例如

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

    因此,我想要的结果是一个与之匹配的表达式。。

    "Test1  this works   Test2"
    

    我如何得到一个结果,我能够匹配任何在末尾有Test1和Test2的文本?

    5 回复  |  直到 8 年前
        1
  •  3
  •   Gilles Quénot ticktalk    8 年前

    试试这个(我用 ):

    > 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 但是 正则表达式 (注意后面的 p )
        2
  •  2
  •   MDrewT    8 年前

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

    var t1 = "Test1";
    var t2 = "Test2";
    var re = new RegExp(t1 + ".*" + t2);
    
    re.test("Test1 some_text Test2"); // true
    
        3
  •  2
  •   Amit    8 年前

    您不需要正则表达式:

    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'));
        4
  •  1
  •   maioman    8 年前

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

    var re = new RegExp("^" + t1 + ".*" + t2 + "$");
    
        5
  •  0
  •   Paul Dempsey    8 年前

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

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