我最近开始学习正则表达式。我现在有一个小问题陈述。
我有这样的模式
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*');
答案 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;