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

标签 javascript regex

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

最佳答案

您可以简单地使用 alternationrepetition .您可能还想使用 anchors这确保整个字符串都由这种模式组成。然后你可以简单地使用 Javascript 的内置 test 函数来做检查:

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

如果必须至少有一项(不允许空字符串),请使用 + 而不是 *:

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

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

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

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

关于javascript - 匹配一组字符串的任意组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14007479/

相关文章:

javascript - 复选框 筛选按具有多个类的类显示的 div

javascript - 从 window.print() 结果生成 PDF

javascript - asp.net 中的 RegularExpressionValidator 不适用于 1 位或 2 位数字

javascript - 使用 Javascript/jQuery 删除字符串中的序数

javascript - knockout : cascade write to multiple observables if no value yet?

javascript - 如何在openlayers中获取当前的缩放

正则表达式匹配列分隔的字符串,除非它以连字符开头

c++ - boost::正则表达式-\bb?

Java正则表达式替换开头的每个数字

ios - 在字符串中查找数字模式