我正在使用此正则表达式来匹配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,1,12345678,1254。 如果出现十进制符号,则十进制前和十进制后应至少有一位数字。
上面的表达式工作正常,但是当我使用 - / +或时失败了。 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();
答案 0 :(得分:3)
^[-+]?(\d{1,8}|(?=\d\d*\.\d+?$)[\d\.]{1,9})$
^[-+]?(\\d{1,8}|(?=\\d\\d*\\.\\d+?$)[\\d\\.]{1,9})$
它将找到一个8位数字 或者,它将找到9个时段或数字的实例...仅在有1个句点分隔数字时。 9是为了解释这段时间。
答案 1 :(得分:1)
试试这个正则表达式:
^[+-]?(?:(?=\d+\.\d+$)[\d.]{3,9}|(?=\d+$)\d{1,8})$
基本上它有两个正则表达式被OR在一起。第一个是检查图案线xx.xx
,表示点两侧的数字。这意味着它可以有至少3到9的长度。
第二个是尝试匹配格式中的数字xxxx
。这意味着它可以有1到8个长度。
您可以从this link获得有关此正则表达式的更多解释。