加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 06:48:16 所属栏目:百科 来源:网络整理
导读:我正在尝试使用以下正则表达式匹配可以包含任意数量的数字字符或小数点的字符串: ([0-9.])* 这里有一些C#代码来测试正则表达式: Regex regex = new Regex("([0-9.])*");if (!regex.IsMatch("a")) throw new Exception("No match."); 我希望在这里抛出异常,
我正在尝试使用以下正则表达式匹配可以包含任意数量的数字字符或小数点的字符串:

([0-9.])*

这里有一些C#代码来测试正则表达式:

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

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

我希望在这里抛出异常,但它不是 – 我是否正确使用正则表达式或模式中是否有错误?

编辑:我也想匹配一个空白字符串.

解决方法

*量词表示“匹配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

凉意.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读