我在c#中有一个正则表达式,只有当输入具有所需的模式时才返回IsMatch = true但实际上如果某些字符匹配则返回true ...正确的正则表达式怎么样?
Regex reg = new Regex(@"[0-9 \-+]"); //accept only numbers, spaces, minus character and plus character
string formularight="1123 - 4432+32124";//its correct
bool validformat=reg.IsMatch(formularight)) //returns true, ok
string formulawrong="1123a - 4432+32124"; //it has one letter ismatch should be false...
validformat=reg.IsMatch(formulawrong)) //returns true, not ok
我稍后会检查每个号码在下一个号码之前是否加上减号或加号,但是如果它可以包含在正则表达式验证中......
我检查了其他正则表达式问题,然后有人建议我使用数据表来计算()表达式或使用一些计算器逻辑,请知道在这种情况下数字被用作字段名称,我将使用它来获取一些值数据库本身不是数值。所以我在解析公式之前只需要正则表达式验证。感谢
Valid examples for regex:
11123
112 - 1121
112-1121
1221111+554-111135678
44332-54-114
Invalid examples (letters present, not a + or - between numbers,...):
112 -
6543e
112 1121
6543e + 4432
-7632
答案 0 :(得分:2)
您的Regular Expression
找到了多个匹配项,因为您没有强制它匹配整个输入。
通过使用以下锚点,将强制检查整个输入。
^
- 开始$
- 结束<强>正则表达式:强>
^[0-9 \-+]*$
Regexr: http://regexr.com/3b97l
答案 1 :(得分:1)
答案 2 :(得分:1)
怎么样:
^\d+(?:\s*[+-]\s*\d+)*$
这适用于有效和无效的示例。
为了匹配括号中的数字:
^\[?\d+\]?(?:\s*[+-]\s*\[?\d+\]?)*$