Regex 在生成正则表达式时向字符串添加必填字符

Regex 在生成正则表达式时向字符串添加必填字符,regex,Regex,我正在处理以下正则表达式: ^((199)[0-9]| 200[0-9]| 201[0-8])(0[1-9]| 1[0-2])(0[1-9]| 1\d | 2\d | 3[01])\s[0-9]?$ 所以我有这个正则表达式,未绑定部分(空格前的前8个字符)工作正常。在第二部分(这将是可选的),从我想放置的空格开始:或。必须输入字符(至少一次) 所以 试试这个正则表达式: ((199)[0-9]|200[0-9]|201[0-8])(0[1-9]|1[0-2])(0[1-9]|1\d|2\d|3[

我正在处理以下正则表达式:

^((199)[0-9]| 200[0-9]| 201[0-8])(0[1-9]| 1[0-2])(0[1-9]| 1\d | 2\d | 3[01])\s[0-9]?$

所以我有这个正则表达式,未绑定部分(空格前的前8个字符)工作正常。在第二部分(这将是可选的),从我想放置的空格开始:或。必须输入字符(至少一次)

所以

试试这个正则表达式:

((199)[0-9]|200[0-9]|201[0-8])(0[1-9]|1[0-2])(0[1-9]|1\d|2\d|3[01]) (?:(?:\d+(?:\.|:|$)){1,4})?
最后一部分将接受模式{digits}{dot/colon/end of string}4次(您可以调整它)


另外,我想指出的是,我不知道总体用例(针对所提到的用例进行了测试),可能需要一些调整。

您需要添加如下可选模式:

^(199[0-9]|200\d|201[0-8])(0[1-9]|1[0-2])(0[1-9]|1\d|2\d|3[01])(?:\s+(\d+(?:[.:]\d+)+))?$

(?:\s+(\d+(?:[.:]\d+)))
部分匹配以下1或0个序列:

  • \s+
    -1个或多个空格
  • (\d+(?:[.:]\d+)
    -捕获组匹配
    • \d+
      -1个或多个数字
    • (?:[.:]\d+
      -1个或多个
      序列,后跟1个或多个数字
注意:您可以使用
{min,max}
限制量词而不是
+
来进一步调整此参数。比如说,要匹配1到3位数字,可以使用
\d{1,3}

^(199[0-9]|200\d|201[0-8])(0[1-9]|1[0-2])(0[1-9]|1\d|2\d|3[01])(?:\s+(\d+(?:[.:]\d+)+))?$