Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Regex 用于固定长度浮点数的正则表达式_Regex_C# 4.0_Linqpad - Fatal编程技术网

Regex 用于固定长度浮点数的正则表达式

Regex 用于固定长度浮点数的正则表达式,regex,c#-4.0,linqpad,Regex,C# 4.0,Linqpad,我使用这个正则表达式来匹配8位有符号浮点数 string exp= "12345678"; string regEx1="^([-+]?[(\\d+\\.?(\\d+)?)]{1,8})($)"; Regex topRowRegx = new Regex(regEx1, RegexOptions.IgnoreCase | RegexOptions.Multiline); Match matchResult = topRowRegx.Match(exp.Trim()); 不考虑-

我使用这个正则表达式来匹配8位有符号浮点数

  string exp= "12345678";
  string regEx1="^([-+]?[(\\d+\\.?(\\d+)?)]{1,8})($)";
  Regex topRowRegx = new Regex(regEx1, RegexOptions.IgnoreCase | RegexOptions.Multiline);
  Match matchResult = topRowRegx.Match(exp.Trim());
不考虑-/+和。符号它应该匹配1到8位数字

它应该匹配-1.2345678、123.45678、+12.34、1.2、1123456781254。 如果出现小数符号,小数点前和小数点后至少应有一位数字

上面的表达式工作正常,但当我使用-/+或时,它失败了。有8位数字。 你能帮我准确地识别8位数字并让剩余的符号计数吗

更新: Vasili Syrakis的回答解决了上述问题。出于好奇,为什么这不能给出正确的结果

   string exp = "text> -9.9999999 \"some text here\"";
   var resultNumber = Regex.Match(exp, "[-+]?(\\d{1,8}|(?=\\d\\d*\\.\\d+?$)[\\d\\.]{1,9})");
   ("Result:"+resultNumber.ToString()).Dump();
试试这个正则表达式:

^[+-]?(?:(?=\d+\.\d+$)[\d.]{3,9}|(?=\d+$)\d{1,8})$
基本上,它有两个正则表达式或'ed在一起。第一个是检查图案线
xx.xx
,表示点两侧的数字。这意味着它可以有最小3到最大9的长度

第二个是试图在格式上匹配数字
xxxx
。这意味着它可以有1到8个长度

有关此正则表达式的更多说明,请参见。

alterned regex: 转义版本: 解释 它将找到一个8位数字
或者它会找到9个周期或数字的实例。。。只有当数字之间有一个句点时。第9项是对这一期间的说明

在线演示

它接受的数字超过8位。检查-12345678.90修改后的一项工作罚款,但接受这些数字“-.12345678”和“-12345678”。小数前后至少应有一位数字。非常感谢Vasili Syrakis。它现在运转良好。这一个也能工作^[-+](\\d{1,8}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\。你的答案是正确的。我已经像这样修改了正则表达式,以匹配我的场景^[+-](?:(?=\d+\.\d+$)[\d.]{1,8}|(?=\d+$)\d{1,8})$。但这个号码是1234。5678@Sree是否有任何原因导致建议的正则表达式(不是您修改的正则表达式)在
-1234.5678上失败?@Sree我必须说,您的修改是错误的。请参阅我答案中的描述,了解我为什么使用
{3,9}
而不是您的
{1,8}
^[-+]?(\d{1,8}|(?=\d\d*\.\d+?$)[\d\.]{1,9})$
^[-+]?(\\d{1,8}|(?=\\d\\d*\\.\\d+?$)[\\d\\.]{1,9})$