3

I need to check JS matches for a dynamically generated string.

ie.

for(i=0; i< arr.length; i++)
{
 pattern_1="/part of "+arr[i]+" string!/i";

 if( string.search(pattern_1) != -1)
  arr_num[i]++;

}

However, this code doesn't work - I presume due to the quotes. How do I do this?

Many thanks.

1
  • what are you trying to match? You are correct though, if you neet to dynamically create the regex, you will need to use new RegExp("string");. Commented Jan 8, 2010 at 18:54

3 Answers 3

7

The /pattern/ literal only works as, well, a literal. Not within a string.

If you want to use a string pattern to create a regular expression, you need to create a new RegExp object:

var re = new RegExp(pattern_1)

And in that case, you would omit the enclosing frontslashes (/). These two lines are equivalent:

var re = /abc/g;
var re = new RegExp("abc", "g");
Sign up to request clarification or add additional context in comments.

Comments

1

Try this:

// note you dont need those "/" and that "i" modifier is sent as second argument
pattern_1= new RegExp("part of "+arr[i]+" string!", "i");

Comments

1

The problem is that you are passing a string to the search function so it treats it as a string. Try using a RegExp object like so:

myregexp = new RegExp("part of " + arr[i] + " string!", "i")
if (string.search(myregexp) != -1) {
   arr_num[i]++;
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.