Regex 用于固定长度浮点数的正则表达式
我使用这个正则表达式来匹配8位有符号浮点数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()); 不考虑-
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})$