其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

求一个正则表达式 要求不能小于0.0001 可以等于 不能是负整数

GG网络技术分享 2025-03-18 16:15 2


问题描述:

求一个正则表达式 要求不能小于0.0001 可以等于 不能是负整数

网友观点:

还得把0排除

 using System;

using System.Text.RegularExpressions;

public class Test

{

public static void Main()

{

// your code goes here

string[] test = { \\\"1.23\\\", \\\"123.45\\\", \\\"111\\\", \\\"12\\\", \\\"1\\\", \\\"0\\\", \\\"0.01\\\", \\\"0.0001\\\", \\\"0.00011\\\", \\\"0.000098\\\", \\\"1.000001\\\", \\\"-1.23\\\" };

foreach (var item in test)

{

var r = Regex.IsMatch(item, @\\\"^(?!0\\.0000)(?!^0$)\\d+(\\.\\d+){0,1}\\\");

Console.WriteLine(item + \\\": \\\" + r);

}

}

}

1.23: True
123.45: True
111: True
12: True
1: True
0: False
0.01: True
0.0001: True
0.00011: True
0.000098: False
1.000001: True
-1.23: False

http://ideone.com/bLtdh9

既然不能小于0.0001,那么显然所有负数都不满足了,为什么又说不能是负整数?

 (?!0.0000)\\d+(\\.\\d+)

using System;

using System.Text.RegularExpressions;

public class Test

{

public static void Main()

{

// your code goes here

string[] test = { \\\"1.23\\\", \\\"123.45\\\", \\\"111\\\", \\\"0\\\", \\\"0.01\\\", \\\"0.0001\\\", \\\"0.00011\\\", \\\"0.000098\\\", \\\"1.000001\\\", \\\"-1.23\\\" };

foreach (var item in test)

{

var r = Regex.IsMatch(item, @\\\"^(?!0\\.0000)\\d+(\\.\\d+){0,1}\\\");

Console.WriteLine(item + \\\": \\\" + r);

}

}

}

1.23: True
123.45: True
111: True
0: True
0.01: True
0.0001: True
0.00011: True
0.000098: False
1.000001: True
-1.23: False

http://ideone.com/hyjTql

纯数字,还写正则干嘛,直接>=0.0001,不就完了

求一个正则表达式的实现?

谢邀

1.1 \\w是包括x的,例如AXBXC+D, AXBXC会被匹配成一组

1.2 你的问题中的值 abc之类的,包括x否?如果包括x,值的代号 a,b,c是否只有一位?如果不仅是一位,那此题无解。就是说如果你允许 abc+d这种,abc是一个值,那你没法把 axc 和 a乘c 区分开。

2.1 一个正则表达式没法解决俩问题,你提取了乘积项,加项就没法提取

2.2 而且乘积项本身就可以是加项

标签:

提交需求或反馈

Demand feedback