如何使用正则表达式来获取字符串中的匹配数?

时间:2012-11-27 19:47:04

标签: javascript regex

我最近开始学习正则表达式。我现在有一个小问题陈述。

我有这样的模式

var pattern = /^(?:hawaian(?:beach|pizza|hotel))$/gim;
var text = "hawaian hotel is near hawaian beach. In the hawaian hotel they sell hawaian pizza";

我想在本文中真正匹配hawaian酒店,hawaian海滩和hawaian披萨。

但该模式仅在hawaianhotel ||等条件下才会返回true hawaianbeach || hawaianpizza。

所以我试过这个

 var text = "hawaianhotel is near hawaianbeach. In the hawaianhotel they sell hawaianpizza";

但这也行不通。

只有这一个正在运作

var matches = pattern.exec('hawaian*');

3 个答案:

答案 0 :(得分:3)

(?:hawaiian[ ](?:beach|pizza|hotel)) 

这将与夏威夷披萨相匹配

注意[]如果你想匹配hawaiian2hotel你会做[0-9]或[2]或者如果你想匹配“hawaiian(任意数量的空格)酒店”你会做[] *(零或更多)或[] +(一个或多个)

另外,这是一个很棒的工具 http://iblogbox.com/devtools/regexp/

答案 1 :(得分:2)

您的模式使用字符串锚点的开头和结尾,因此如果模式匹配整个字符串,则只匹配字符串。移除^$,您应该没问题。请注意,我还添加了一个空格,以便您可以匹配“hawaian hotel”而不是“hawaianhotel”。

var pattern = /(?:hawaian (?:beach|pizza|hotel))/gim;

答案 2 :(得分:0)

var pattern = /(?:hawaian[ ](?:beach|pizza|hotel))/gim;