Reputation: 167
i have a ploblem. im genereting a small scipt for text matches cont and ordering match counts. click to see jsfiddle live example
my example scripts :
var testtext1 = "apple banana and kiwi pineapple juice";
var testtext2 = "need apple banana pineapple milkshake";
var testtext3 = "apple pineapple lower prices";
var testtext4 = "only apple banana kiwi pineapple lovers";
var testtext5 = "kiwi pineapple apple banana sales";
alert(testtext1.match(/apple banana kiwi|apple banana|apple|banana|kiwi/gi).length); //3 matches
alert(testtext2.match(/apple banana kiwi|apple banana|apple|banana|kiwi/gi).length); //2 m
alert(testtext3.match(/apple banana kiwi|apple banana|apple|banana|kiwi/gi).length); //2 m
alert(testtext4.match(/apple banana kiwi|apple banana|apple|banana|kiwi/gi).length); //2 m
alert(testtext5.match(/apple banana kiwi|apple banana|apple|banana|kiwi/gi).length); //3 matches
text1= only 3 matches why ? watch regex
apple banana kiwi OR apple banana OR apple OR banana OR kivi
apple banana kiwi NO match 0
apple banana YES match 1
appple YES match 2
banana YES match 3
kiwi YES match 4
okay why return 3 matches not 4 matches ?? and other examples ?
Upvotes: 1
Views: 207
Reputation: 46841
Have a look at below demo
surround it by word boundary otherwise pineapple
will be matched by apple
\b(apple banana kiwi|apple banana|apple|banana|kiwi)\b
Matches
apple banana and kiwi pineapple juice 2
need apple banana pineapple milkshake 1
apple pineapple lower prices 1
only apple banana kiwi pineapple lovers 1
kiwi pineapple apple banana sales 2
If you change the order then the result will be something different
\b(apple|banana|apple banana kiwi|apple banana|kiwi)\b
apple banana and kiwi pineapple juice 3
Upvotes: 1