Skip to main content
 首页 » 编程设计

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

2024年04月30日44Terrylee

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

^$|^[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} - 两位、一位或零位
  • $ - 字符串结束。