gpt4 book ai didi

C# Regex.IsMatch 不应该返回 true?

转载 作者:行者123 更新时间:2023-11-30 13:08:23 24 4
gpt4 key购买 nike

我正在尝试使用以下正则表达式匹配可以包含任意数量的数字字符或小数点的字符串:

([0-9.])*

下面是一些用于测试正则表达式的 C# 代码:

Regex regex = new Regex("([0-9.])*");

if (!regex.IsMatch("a"))
throw new Exception("No match.");

我希望在此处抛出异常,但事实并非如此 - 我是否错误地使用了 Regex 或模式中是否存在错误?

编辑:我还想匹配一个空白字符串。

最佳答案

* 量词表示“匹配 0 个或多个”。在您的情况下,“a”返回 0 个匹配项,因此正则表达式仍然成功。你可能想要:

([0-9.]+)

+ 量词表示“匹配 1 个或多个,因此它在非数字输入上失败并且不返回任何匹配项。快速旋转 regex tester 显示:

input      result
----- ------
[empty] No matches
a No matches
. 1 match: "."
20.15 1 match: "20.15"
1 1 match: "1"
1.1.1 1 match: "1.1.1"
20. 1 match: "20."

看起来我们有一些误报,让我们修改正则表达式:

^([0-9]+(?:\.[0-9]+)?)$

现在我们得到:

input      result
----- ------
[empty] No matches
a No matches
. No matches
20.15 1 match: "20.15"
1 1 match: "1"
1.1.1 No matches: "1.1.1"
20. No matches

凉爽。

关于C# Regex.IsMatch 不应该返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642272/

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