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



我正在尝试创建与任何数量的一组字符串匹配的JavaScript正则表达式:例如,将匹配onetwothreethreetwoonetwotwotwooneoneonethreeonetwo匹配的正则是。是否可以创建一个正则表达式,以上述方式匹配单词"一个","两个"one_answers"三"的任何组合?

您可以简单地使用交替和重复。您可能还需要使用锚点,以确保整个字符串由此模式组成。然后,您只需使用JavaScript的内置test函数即可进行检查:

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

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

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

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

如果要找到符合此模式的输入的子字符串,请省略锚点(^$),请使用全局标志g并在字符串上使用match

>
var matchArray = input.match(/(?:one|two|three)+/g);
/(one|two|three)+/

组在括号中,内部的|代表"或"和+表示"一个或多个"。

相关内容

最新更新