是否可以使用JavaScript中的RegExp匹配不同的特定长度?

时间:2014-08-21 22:19:26

标签: javascript regex

我知道使用JS RegExp我可以匹配:

  • 确切长度; /^[a-zA-Z]{7}$/
  • 长度范围; /^[a-zA-Z]{3,7}$/
  • 最小长度; /^[a-zA-Z]{3,}$/

如果我想匹配不同的特定长度怎么办?类似于:/^[a-zA-Z]{2|4|6}$/意味着字符串必须具有2,4或6个字符的长度。我可以使用JavaScript的RegExp吗?

我尝试使用谷歌搜索但无法找到搜索此特定情况的方法,我总是找到如何匹配长度范围。

情景:我目前有这个if声明,我想缩短声明:

if(typeof ean !== 'string' || !/^\d+$/.test(ean) || [8, 12, 13, 14].indexOf(ean.length) === -1) {
    return false;
}

1 个答案:

答案 0 :(得分:2)

您需要的只是正则表达式OR |模式,但需要重复一遍:

/^(?:[a-zA-Z]{2}|[a-zA-Z]{4}|[a-zA-Z]{6})$/

请注意,(?:...)部分只是一个非捕获组,用于制作所有替代方案"作为一个组成。"没有它,^$必须包含在每个替代方案中。

在您的具体情况下,也许可以尝试:

/^(?:\d{8}|\d{12,14})$/
相关问题