苏飞论坛

标题: 求助,求一个匹配四则运算的正则表达式 [打印本页]

作者: 站长苏飞    时间: 2013-2-26 11:08
标题: 求助,求一个匹配四则运算的正则表达式
成都]看看路过 10:55:11
求助,求一个匹配四则运算的正则表达式

站长苏飞<sufei.1013@163.com>  11:07:08
[code=csharp]  string pattern = @"^(((?<o>\()[-+]?([0-9]+[-+*/])*)+[0-9]+((?<-o>\))([-+*/][0-9]+)*)+($|[-+*/]))*(?(o)(?!))$";  [/code]




作者: 站长苏飞    时间: 2013-2-26 11:09
[code=csharp]public static bool CheckExpressionValid(string input)
{
    string pattern = @"^(((?<o>\()[-+]?([0-9]+[-+*/])*)+[0-9]+((?<-o>\))([-+*/][0-9]+)*)+($|[-+*/]))*(?(o)(?!))$";   
    //去掉空格,且添加括号便于进行匹配   
    return Regex.IsMatch("(" + input.Replace(" ", "") + ")", pattern);
}[/code]


[code=csharp]string[] inputs = new string[]
{
    "(",
    "(() ",
    "1 / ",
    ")1 ",
    "+3 ",
    "((1) ",
    "(1)) ",
    "(1) ",
    "1 + 23",
    "1+2*3 ",
    "1*(2+3) ",               
    "((1+2)*3+4)/5 ",
    "1+(2*) ",                                                
    "1*(2+3/(-4)) ",               
};

foreach (string input in inputs)
{
    Console.WriteLine("{0}:{1} ", input, CheckExpressionValid(input));
}
Console.ReadKey();[/code]

作者: 站长苏飞    时间: 2013-2-26 11:13
[code=html]<script>
var str="1+11*((2+3))"
var re=/^[\d-+*/()]+$/g;
var re2=/\d\(/g;
var re3=/\(/g;
var re4=/\)/g;
var re5=/[-+*/][-+*/]/g;
if (re.test(str)&&(!re2.test(str))&&(str.match(re3).length==str.match(re4).length)&&(!re5.test(str)))
{alert("ok")}
else
{alert("no")}

</script> [/code]
作者: yangying    时间: 2013-2-26 13:36
支持




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4