首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在生成正则表达式时向字符串中添加强制字符

在生成正则表达式时向字符串中添加强制字符
EN

Stack Overflow用户
提问于 2016-10-07 15:12:17
回答 2查看 47关注 0票数 1

我正在做以下工作:

^((199)0-9|2000-9|2010-8)(01-9|10-2)(01-9|1\d|2\d|301)\s0-9?$

所以我有这个正则表达式,未加黑体的部分(空间前的前8个字符)工作正常。在第二部分(这将是可选的),从我想要放置的空格开始:或。强制字符(至少一次)。

所以

代码语言:javascript
复制
19991019 will pass
19991019 1233 won't pass because does not include : or .
19991019 10:12:12 will passs
19991019 10.2.4 will pass
19991019123.1231.123 won't pass
19991019 aa.12.22 won't pass (because no letters are allowed)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-07 15:24:20

您需要添加这样的可选模式:

代码语言:javascript
复制
^(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+)+))?$

regex演示

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

  • \s+ -1或更多空白空间
  • (\d+(?:[.:]\d+)+) -捕获组匹配
    • \d+ -1或更多位数
    • (?:[.:]\d+)+ -1或更多的.:序列后面跟着一个或更多位数

注意,您可以使用{min,max}限制量词而不是+来进一步调优。比方说,要匹配1到3位数字,可以使用\d{1,3}

票数 1
EN

Stack Overflow用户

发布于 2016-10-07 15:21:50

试试这个正则表达式:

代码语言:javascript
复制
((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})?

最后一部分将接受模式{位}{点/冒号/字符串的结尾}4次(您可以调整它)。

另外,我想提到的是,我不知道整个用例(对上述用例进行了测试),它可能需要一些调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39920561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档