匹配一组字符串的任意组合

时间:2012-12-22 23:33:02

标签: javascript regex

我正在尝试创建一个匹配任意数量的字符串组的JavaScript正则表达式:例如,匹配onetwothreethreetwoonetwotwotwooneoneonethreeonetwo的正则表达式。是否可以创建一个正则表达式,以上述方式匹配单词“one”,“two”和“three”的任意组合?

2 个答案:

答案 0 :(得分:3)

您只需使用alternationrepetition即可。您可能还想使用anchors来确保整个字符串由此模式组成。然后你可以简单地使用Javascript的内置test函数来进行检查:

if(/^(?:one|two|three)*$/.test(input))
    ...

如果必须至少有一个术语(不允许使用空字符串),请使用+代替*

if(/^(?:one|two|three)+$/.test(input))
    ...

?:抑制capturing并且应该始终使用(除非您明确需要捕获,当然)。这是一种很好的做法,可以大大提高更复杂模式的性能。

如果要查找符合此模式的输入的子字符串,请省略锚点(^$),使用全局标记g并使用{{1}而在字符串上改为:

match

答案 1 :(得分:1)

/(one|two|three)+/

小组在括号中,|里面代表“或”,+代表“一个或多个”。