RegExp Quantifier匹配模式正好n或m次而不是n到m次

时间:2017-01-16 16:00:07

标签: regex

我想匹配2位和4位数字。这个RegExp是一个显而易见的选择:

  <div className="form_wrapper">
  <ReCAPTCHA
            sitekey="xxxxxxxxxxx"
            render="explicit"
            onloadCallback={this.callback}
            verifyCallback={this.verifyCallback}
          />
  </div>
  <NavigationBar
     fields={requiredFields}
    // disableNext={this.props} (here where i make conditions to disable)
    />

然而,这匹配3位数字。在regexp中有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以使用([0-9]{2}){1,2}

/\b([0-9]{2}){1,2}\b/

以上正则表达式不一般;这是可能的,因为4 = 2 * 2.

更通用的解决方案是:

/\b[0-9]{2}\b|\b[0-9]{4}\b/

注意:\b(字边界)用于防止从3位数(或5,6,......数字字符串)中匹配2位数字。

答案 1 :(得分:0)

您可以使用负向lookbehind / lookahead来实现此目的:

这是实现您尝试做的事情的一种可能方式。

/(?<!\d)(\d{2}|\d{4})(?!\d)/

这说 - 找到一个2位或4位数字,前面或后面跟着另一个数字。这与上面的答案的不同之处在于它将匹配所有2位和4位数字,包括那些未被空格包围的数字,例如&#34; 12&#34;在字符串&#34; abc12def&#34;。

您选择哪种方式取决于您所寻找的具体内容。