gpt4 book ai didi

regex - 数字正则表达式帮助

转载 作者:行者123 更新时间:2023-12-04 06:17:53 25 4
gpt4 key购买 nike

我正在学习正则表达式,我正在尝试创建一个可以验证整数或小数的正则表达式。

我创建了这个正则表达式:

^(\d+)|([\d+][\.{1}][\d+])$

它几乎有效,但它说的是一个数字:
12. 
12..
12..67

是比赛。

我想
([\d+][\.{1}][\d+])

意味着它必须有一个或多个数字,后跟一个点(并且只有一个),后跟一个或多个数字。

有人可以解释我做错了什么吗?

作为一个学习过程,我感兴趣的是我做错了什么,而不是另一种做错的方式。我尝试遵循语法示例,但我错过了一些东西。

最佳答案

你错了

([\d+][\.{1}][\d+])

用方括号创建字符类。这意味着
[\d+]确实意味着匹配一个数字或一个 +一次。
[\.{1}]确实意味着匹配 .{1}
要获得您期望的行为,请删除方括号
(\d+\.{1}\d+)

这将匹配至少一位数字,即 .后跟一位或多位数字

这里的另一个问题是 ^仅属于您表达式的第一部分和 $只属于你交替的最后一部分。所以你应该在完整的交替周围加上括号
^((\d+)|(\d+\.{1}\d+))$

如果您不需要捕获组中的匹配项,您可以删除单个选项周围的括号
^(\d+|\d+\.{1}\d+)$

正如 Jens 指出的最后一点
{1}是多余的 \.{1}\. 相同

然后我们在
^(\d+|\d+\.\d+)$

关于regex - 数字正则表达式帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7008745/

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