我想知道你是否可以提供建议,我已经搜索了大部分你的网站以获得类似的例子,但作为程序员,你的答案似乎对像我这样的初学者来说非常复杂
基本上我们有一个文件名结构,最少5个字符,最多6个字符,以1
或2
开头,然后是句号.
然后.
示例文件名位于
之下123456.1
我正在尝试创建一个正则表达式,它会根据上面的语句在文本文件列表中运行时选择正确的文件名,但是我已经尝试了这个并且它不起作用
如果我在没有1|2
的情况下尝试,它会选择参考,但我需要第一个数字为1
或2
^1|2\d{5,6}][\.][0-5]{1}$
希望这能从文本文件中选择以1
或2
开头的任何数字,最少5位,最多6位数,然后是一个句号,然后是另一个数字< / p>
基本上我想要选择的一些例子如下:
123456.1 OK
25689.2 OK
061589.2 NOT OK
1235.6 NOT OK
765812.1 NOT OK
289657.5 OK
我希望我提供了足够的信息,如果没有,请告诉我。
答案 0 :(得分:3)
^[12]\d{4,5}\.[1-5]$
应该有用。
简短说明:
[12]
匹配1或2 \d{4,5}
匹配长度为最小4和最大5的任何(任意)数字序列(因为我们之前已将第一个数字与[12]
匹配)\.
匹配一段时间[1-5]
匹配1到5之间的任何数字答案 1 :(得分:0)
如果您确实在验证号码,为什么不实际验证号码呢? (这个答案可能稍微有点儿)
class Program
{
private static readonly string[] Items =
{
"123456.1",
"25689.2",
"061589.2", //NOT
"1235.6", //NOT
"765812.1", //NOT
"289657.5"
};
static void Main()
{
foreach (string item in Items)
{
Console.WriteLine(Validate(item));
}
Console.ReadKey();
}
static bool Validate (string item)
{
decimal d;
if (decimal.TryParse(item,out d))
{
if (((d < 10000.1m) || (d > 299999.5m)) ||
((d > 29999.5m) && (d < 100000.1m))) return false;
// validate fraction here
var i = d - decimal.Truncate(d);
return (i >= 0.1m && i <= 0.5m);
}
return false;
}
}