c# - 为数字符号编写正则表达式

标签 c# regex validation

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

^$|^[1-9]+([\.,]\d{0,2})?$

它应该接受:

1
11,00
100,88 (error)
100 (error)
11.00
100.88

不应接受:

0
-5
0,55
0.55

我该如何解决?

最佳答案

您可以将整个模式包含在可选组中并使用 \d而不是 [1-9]并添加 (?!0+)排除具有前导零的匹配值的负先行限制:

^(?!0+)(?:\d+(?:[.,]\d{0,2})?)?$
 ^^^^^^^^^                   ^^

参见 regex demo

如果不想匹配53. -like 值,您需要替换 {0,2}{1,2} .

图案细节:

  • ^ - 字符串开始
  • (?!0+) - 开头没有零
  • (?:\d+(?:[.,]\d{0,2})?)? - 可选的(一或零)序列:
    • \d+ - 一位或多位数字
    • (?:[.,]\d{0,2})? - 可选的(一或零)序列:
      • [.,] - .,
      • \d{0,2} - 两位、一位或零位
  • $ - 字符串结束。

关于c# - 为数字符号编写正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37276192/

相关文章:

c# - 尽管使用 "Namespace Name ",但仍收到错误 "Google.GData.Contacts"联系人“不存在”?

php - 帮助正则表达式匹配除管理文件夹以外的任何网址

php - PHP 中的特殊字符(如 omega 和 beta)字符串匹配

c# - 从 .net 中的 youtube url 中提取视频 ID

asp.net - 如果我的 ASP.NET Web 应用程序不适合运行时?

javascript - 如何在 Angular Controller 中向此方法添加验证?

C# 可重用函数转储局部变量的当前值

c# - 有没有办法将 C# 中的 IntPtr/void* 转换为 ref SomeStruct?

c# - 从 Outlook 电子邮件中获取正文 [Drag'and'Drop]

python - 使用 pydantic @validator 装饰器捕获错误以进行 fastapi 输入查询