问题
我正在尝试实现匹配 [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/