gpt4 book ai didi

javascript - 正则表达式只允许 x 整数?

转载 作者:行者123 更新时间:2023-11-30 09:49:10 27 4
gpt4 key购买 nike

我有一些日期看起来像这样:

20160517124945-0600

20160322134822.410-0500

20160322134822-0500

我用了RegexMagic找到这个正则表达式:

(?:[0-9]+){14}\.?(?:[0-9]+){0,3}-(?:[0-9]+){4}

问题是它也接受这样的东西:

20160322134822-05800

20160323542352352352134822-0500

显然 {} 并不像我想的那样。如何确保只能在 -(或可选的 .)之前输入 14 位数字,在之后输入 4 位数字?

最佳答案

请注意,您的正则表达式未按预期运行,因为 (?:[0-9]+){0,3} 表示 匹配 1 个或多个数字零、一个、两个或三遍。这意味着,它匹配任意数量的数字。

看来您需要为 . 加上 1+ 位的可选组,您需要将 + 替换为限制量词:

^\d{14}(?:\.\d+)?-\d{4}$

参见 regex demo.

解释:

  • ^ - 字符串的开始(我们需要确保我们只匹配 .- 之前的 14 个第一个数字)
  • \d{14} - 14 位数字
  • (?:\.\d+)? - 1 或 0 个 序列。 + 1 个或多个数字
  • - - 连字符
  • \d{4} - 4 位数字
  • $ - 字符串结尾

var re = /^\d{14}(?:\.\d+)?-\d{4}$/; 
var strs = ['20160517124945-0600', '20160322134822.410-0500', '20160322134822-0500', '20160322134822-05800','20160323542352352352134822-0500'];
for (var s of strs) {
document.body.innerHTML += s + ": " + re.test(s) + "<br/>";
}

关于javascript - 正则表达式只允许 x 整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309979/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com