只要语法正确就可以的。就是比如说A and B and C,A or B or C,等等等等,包括带括号的,也要考虑。

解决方案 »

  1.   

    再加一个
    \w+(( (and|or)( not)? \w+)+?)*
      

  2.   

    写了一个
    \w+(?:[\s]*(?:and|or)[\s]*\w+)*
      

  3.   

    下面两个不够全面。很多right的逻辑报错!\w+(?:[\s]*(?:and|or)[\s]*\w+)* 
    \w+(( (and|or) \w+)+?)*
      

  4.   

    把变量换成具体值,然后语法换成JS语法,比如and换成&& or 换成||
    然后eval即可。。如果要一个式子的话JS是不可能滴
    比如你欠套了若干层括号
      

  5.   

    昂。。
    try {eval(替换后的结果);alert(true);} catch (exp) {alert(false);}
      

  6.   

    昂。。偶说了。。
    如果要一个式子的话JS是不可能滴貌似PHP里有个什么R听说过呵。。只懂JS正则。。
      

  7.   

    不过如果欠套的话。。还需要判断括号里的逻辑。
    所以最简策略就是eval
      

  8.   

    如果你的要求没那么复杂,大概能通过以下方式实现举例:
    关系: a & (b|d) & c
    正则: /a(?:b|d)c/
      

  9.   

    LZ可能想要能通过解释的 条件。。比如 a or and b 就是错的。。
    a or (a and ((d) or (a or d)))  )
    也是错的。。:D
      

  10.   

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ※以下是引用14楼 muxrwc(十月,期待) 在2007-07-20 14:20:41 的发言:
    ──────────────────────────────────────────
    LZ可能想要能通过解释的 条件。。
    比如 a or and b 就是错的。。
    a or (a and ((d) or (a or d)))  )
    也是错的。。
    :D
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━哦,明白了,前面我理解错也就是说and和or是关键字,
    那像 band and a 这样的处理起来挺麻烦了
      

  11.   

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ※以下是引用11楼 muxrwc(十月,期待) 在2007-07-20 14:09:18 的发言:
    ──────────────────────────────────────────
    不过如果欠套的话。。还需要判断括号里的逻辑。
    所以最简策略就是eval
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    确实提供了一个不错的思路
      

  12.   

    var str = "a and  or c and d"
    var str2 = str.replace(/\band\b/ig, "&&");
    str2 = str2.replace(/\bor\b/ig, "||");
    var re = /\b\w+\b/ig;
    var definiens = "";
    while(re.exec(str2))
    {
        definiens += RegExp.lastMatch + "=true;";
    }
    try
    {
        eval(definiens + str2);
        alert("true");
    }
    catch(e)
    {
        alert("false");
    }
      

  13.   

    丫丫,正如上面大家分析的情况。是可能要嵌套很多括号,而且要考虑平衡组的问题。而且。条件可不只是像A,B,C啊,可能有N个。
      

  14.   

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    ※以下是引用楼主 wanshiylj() 在2007-07-20 16:52:51 的发言:
    ──────────────────────────────────────────
    你写的这个好像没有考虑到括号的问题啊。
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━你不测试就说话,什么叫“好像” -_-#
      

  15.   

    此表达式需要面向用户,用户可以输入以or and 关键字 以及 ()数学运算符。啊呀呀烦啊,搞不出来。
      

  16.   

    靠!var str = "(a and b) or c and d"
    var str2 = str.replace(/\band\b/ig, "&&");
    str2 = str2.replace(/\bor\b/ig, "||");
    var re = /\b\w+\b/ig;
    var definiens = "";
    while(re.exec(str2))
    {
        definiens += RegExp.lastMatch + "=true;";
    }
    try
    {
        eval(definiens + str2);
        alert("true");
    }
    catch(e)
    {
        alert("false");
    }
    我前面给你写的那个程序已经可以处理括号的情况了,你测试都不测试一下,真是浪费我表情!
      

  17.   

    <html>
       <head>
    <script language="Javascript1.2" >
    function checkAddress(Email)
    {
       var str = "document.f1.Email.value";
    var str2 = str.replace(/\band\b/ig, "&&");
    str2 = str2.replace(/\bor\b/ig, "||");
    var re = /\b\w+\b/ig;
    var definiens = "";
    while(re.exec(str2))
    {
        definiens += RegExp.lastMatch + "=true;";
    }
    try
    {
        eval(definiens + str2);
        alert("true");
        document.f1.Email.select();
    document.f1.Email.focus();
    }
    catch(e)
    {
        alert("false");
    document.f1.Email.select();
    document.f1.Email.focus();
    }
       }
    </script>
    </head>
       <body>
       <form name="f1" method="post" onsubmit="return check()">
       Email<input name="Email" type="text">
       <input type="submit" value="提交">
       </form>
      </body>
     </html>
    帮我看看哪里写错了。
      

  18.   

    <form name="f1" method="post" onsubmit="return check()">
    更正
     <form name="f1" method="post" onsubmit="return checkAddress(Email)">
      

  19.   

    关于正侧的资料可具体参考http://legoras.cnblogs.com/里面有很多C#的资料