Azevedo
Azevedo

Reputation: 2189

Match any/all of multiple words in a string

I'm trying to write this regEx (javascript) to match word1 and word2 (when it exists):

This is a test. Here is word1 and here is word2, which may or may not exist.

I tried these:


(word1).*(word2)?

This will match only word1 regardless if word2 exists or not.


(word1).*(word2)

This will match both but only if both exists.


I need a regex to match word1 and word2 - which may or may not exist.

Upvotes: 29

Views: 43625

Answers (1)

Phrogz
Phrogz

Reputation: 303198

var str = "This is a test. Here is word1 and here is word2, which may or may not exist.";
var matches = str.match( /word1|word2/g );
//-> ["word1", "word2"]

String.prototype.match will run a regex against the string and find all matching hits. In this case we use alternation to allow the regex to match either word1 or word2.

You need to apply the global flag to the regex so that match() will find all results.

If you care about matching only on word boundaries, use /\b(?:word1|word2)\b/g.

Upvotes: 59

Related Questions