rjg132234
rjg132234

Reputation: 620

How to concat two javascript variables and regex expression

I want to be able to concat two variables with a regular expression in the middle.

e.g.

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

So the result I want is an expression that matches this..

"Test1  this works   Test2"

How do I get a result where I am able to match any text that has Test1 and Test2 on the ends?

Upvotes: 0

Views: 3342

Answers (5)

Gilles Quénot
Gilles Quénot

Reputation: 185005

Try this (I use ):

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

Note

  • .* as stated in comments, this means any character repeated from 0 to ~
  • the slashes are automagically added when calling the RegExp constructor, but you can't have nested unprotected slashes delimiters
  • to ensure Test1 is at the beginning, i put ^ anchor, and for Test2 at the end, I added $ anchor
  • the regex constructor is not ReGex but RegExp (note the trailing p)

Upvotes: 3

maioman
maioman

Reputation: 18734

if you know the beginning and the end you can enforce that:

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

Upvotes: 1

Paul Dempsey
Paul Dempsey

Reputation: 663

Take care that the value of the two variables do not contain any special regex characters, or transform those values to escape any special regex characters.

Of course, also make sure that the regex in between matches what you want it to :-)

Upvotes: 0

Amit
Amit

Reputation: 46323

You don't need regex:

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'));

Upvotes: 2

MDrewT
MDrewT

Reputation: 66

The RegExp constructor takes care of adding the forward slashes for you.

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

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

Upvotes: 2

Related Questions