javascript - 尝试优化正则表达式

标签 javascript regex

问题

我正在尝试实现匹配 [0-9]:[0-9][0-9].[0-9] 的正则表达式或 [0-9][0-9]:[0-9].

我尝试过的

/^\d?(\d+)?((\.|\:|\d)$|(\.|\:|\d)(\d+)?\d$)/

这个满足我条件的正则表达式。

我的优化代码

\d+[\.:]*\d*

但这是接受 2:2:。其实不应该。无法解决这个问题。

最佳答案

您的 \d+[\.:]*\d* 未被锚定并匹配匹配该模式的部分子字符串。此外,它匹配 11.......::::: 就像 [.:]* 匹配 0+ .: 字符。

你可以使用

^\d+(?:[.:]\d*)?$

参见 regex demo .

详情

  • ^ - 字符串的开始
  • \d+ - 1+ 位
  • (?: - 非捕获组匹配的开始
    • [.:] - 一个 .:
    • \d* - 0+ 位
  • )? - 1 次或 0 次
  • $ - 字符串结尾。

关于javascript - 尝试优化正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54518047/

相关文章:

javascript - 如何在 FireFox 中检查 Javascript 中的无效日期

javascript - Rails link_to 与 onclick to google analytics 事件

javascript - MongoDB:如何使用正则表达式重命名字段

java - 修改大字符串

javascript - ES6 将 url 附加到数组中的映射对象

javascript - 警告框中的选项卡 '\t' 不适用于 Chrome

javascript - every() 方法没有返回正确的值

r - R 中的 stri_detect_regex 错误

regex - 如何将Apache告诉与此相对的LocationMatch?

regex - 使用模式属性排除邮政信箱地址