Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证十进制数的正则表达式_C#_.net_Regex - Fatal编程技术网

C# 验证十进制数的正则表达式

C# 验证十进制数的正则表达式,c#,.net,regex,C#,.net,Regex,正则表达式应符合以下条件。点之前和之后的元素数量可以是任意的。只允许1点,第一个位置只允许负号。我不需要逗号 例如: 1 -1 -1. 1. 1.2 -.2 -0.2 000.300 以上所有表达式都应为真 所以如果我分手 在第一个位置有一个可选的负号 点前零个或多个数字 点是可选的。最多可发生一次。它也可以是纯整数 点后有0个或多个数字 任何帮助都将不胜感激。1)首先请选择负号: ^:字符串的开头 -:负号 ?:使前面的字符成为可选字符 2) 零或多个数字 /d:数字 *:匹配前一项的尽可能

正则表达式应符合以下条件。点之前和之后的元素数量可以是任意的。只允许1点,第一个位置只允许负号。我不需要逗号

例如:

1
-1
-1.
1.
1.2
-.2
-0.2
000.300
以上所有表达式都应为真

所以如果我分手

  • 在第一个位置有一个可选的负号
  • 点前零个或多个数字
  • 点是可选的。最多可发生一次。它也可以是纯整数
  • 点后有0个或多个数字
  • 任何帮助都将不胜感激。

    1)首先请选择负号:

    ^:字符串的开头

    -:负号

    ?:使前面的字符成为可选字符

    2) 零或多个数字

    /d:数字

    *:匹配前一项的尽可能多(包括零)

    3) 可选点

    .:圆点

    ?:使点成为可选的

    4) 点后有0个或更多详细信息

    /d:数字

    *:匹配前一项的尽可能多(包括零)


    总之:^-?/d*?/d*

    您可能想要的是:

    ^-?\d*\.?\d*
    
    这将给您一个可能的负号(
    -?
    ),
    后跟任意位数(
    \d*
    ),
    后跟一个可能的小数点(
    \.
    ),
    后跟小数点后任意数量的尾随数字(
    \d*


    因为您只想验证它是否是有效的浮点,@MarcinJuraszek有一个很好的观点,所以您可能不想在这里使用regex

    这是我的解决方案

    专业人士

    • 用户可以指定精度
    • 接受逗号或点
    • 接受负值
    • 接受整数
    缺点

    • 对于.0或0不起作用:(

      [-]?\d{1,18}(?:[,.]\d{1,2})$


    我喜欢那个找到经过测试的好正则表达式的网站:)这里有一个:^[-+]?\d+(\.\d+)$为什么要使用正则表达式?您可以尝试使用decimal.TryParse()代替。可能的重复项和一些others@MarcinJuraszek没错,每个人都在使用dotNet…;)@问题中的Ia之前被标记为
    C
    标记,并且在标题中有
    C
    。这就是我发表评论的原因。顺便说一句,我不知道为什么@konrad删除了那个标签……用这个解决方案,你会使用什么
    Regex
    方法?我目前正在将它与
    IsMatch
    一起使用,例如:
    Regex.IsMatch(string,@“^-?\d*\。?\d*”)
    ,但没有得到任何结果。它接受无效的输入(4.)。如果有一个点,后面必须有一个数字。你是怎么做到的?